Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบว่าการหมุนขวาสร้างอาร์เรย์เพิ่มหรือลดของจำนวนธรรมชาติ n ตัวแรกได้หรือไม่ใน Python

สมมติว่าเรามีรายการตัวเลขชื่อ 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]

ขั้นตอนการแก้ปัญหา

  1. n := ขนาดของ nums
  2. สำหรับ i ในช่วง 1 ถึง n-1:
    • ถ้า |nums[i-1] - nums[i]| != 1 และ |nums[i-1] - nums[i]| != n-1 คืนค่า False
  3. คืนค่า 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