สมมติว่าเรามีรายการตัวเลขชื่อ nums มี n สมาชิก เราต้องตรวจสอบว่าสามารถสร้างรายการจำนวนธรรมชาติ n ตัวแรก เรียงเพิ่ม [1, 2, ..., n] หรือลด [n, n-1, ..., 1] ได้โดยการเลื่อน nums ไปขวา จำนวนครั้งเท่าไรก็ได้ หรือไม่
เช่น ถ้าอินพุตคือ nums = [5, 6, 1, 2, 3, 4] ผลลัพธ์จะเป็น True เพราะเลื่อนขวา 4 ครั้ง ได้ [1, 2, 3, 4, 5, 6]
ขั้นตอนการแก้ปัญหา
n := ขนาดของ nums- สำหรับ
iในช่วง1ถึงn-1:- ถ้า
|nums[i-1] - nums[i]| != 1และ|nums[i-1] - nums[i]| != n-1คืนค่าFalse
- ถ้า
- คืนค่า
True
ตัวอย่างการใช้งาน
def solve(nums):
n = len(nums)
for i in range(1, n):
if abs(nums[i - 1] - nums[i]) != 1 and abs(nums[i - 1] - nums[i]) != n - 1:
return False
return True
nums = [5, 6, 1, 2, 3, 4]
print(solve(nums))
อินพุต
[5, 6, 1, 2, 3, 4]
เอาต์พุต
True