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

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


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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 แล้ว
      • คืนค่าเท็จ
  • คืนค่า 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