สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งมีองค์ประกอบ n รายการ เราต้องตรวจดูว่าเราจะสร้างรายการที่มี n ตัวเลขแรกได้หรือไม่ ไม่ว่าจะเพิ่มขึ้นหรือลดลง เช่น [1, 2, ..., n] หรือ [n, n - 1, ..., 1] โดยการขยับ ตัวเลขไปทางขวากี่ครั้งก็ได้
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5,6,1,2,3,4] ผลลัพธ์จะเป็น True เพราะเราสามารถเลื่อนสี่ครั้งเพื่อสร้างอาร์เรย์ [1,2,3,4, 5,6]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ nums
- สำหรับฉันในช่วง 1 ถึง n - 1 ทำ
- ถ้า |nums[i - 1] - nums[i]| ไม่ใช่ 1 และ |nums[i - 1] - nums[i]| ไม่ใช่ n-1 แล้ว
- คืนค่าเท็จ
- ถ้า |nums[i - 1] - nums[i]| ไม่ใช่ 1 และ |nums[i - 1] - nums[i]| ไม่ใช่ n-1 แล้ว
- คืนค่า 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