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

ตรวจสอบว่าอาร์เรย์ถูกจัดเรียงและหมุนใน Python . หรือไม่


สมมติว่าเรามีอาร์เรย์ของค่าที่ไม่ซ้ำ n ค่า เราต้องตรวจสอบว่าอาร์เรย์นี้จัดเรียงและหมุนทวนเข็มนาฬิกาหรือไม่ ที่นี่จำเป็นต้องมีการหมุนอย่างน้อยหนึ่งครั้ง ดังนั้นอาร์เรย์ที่จัดเรียงอย่างสมบูรณ์ไม่ถือว่าเป็นการเรียงลำดับและหมุน

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[4,5,6,8,1,3] เอาต์พุตจะเป็น True เนื่องจากเราสามารถหมุนตามเข็มนาฬิกาได้สองครั้ง ผลลัพธ์จะถูกจัดเรียงเช่น [1, 3, 4, 5, 6, 8].

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • min_element :=ค่าต่ำสุดของ nums
  • min_index :=ดัชนีของ min_element เป็น nums
  • before_sorted :=จริง
  • สำหรับฉันในช่วง 1 ถึง min_index - 1 ทำ
    • ถ้า nums[i]
    • before_sorted :=เท็จ
    • ออกมาจากลูป
  • after_sorted :=จริง
  • สำหรับฉันอยู่ในช่วง min_index + 1 ถึงขนาด nums - 1 ทำ
    • ถ้า nums[i]
    • after_sorted :=เท็จ
    • ออกมาจากลูป
  • ถ้า before_sorted และ after_sorted เป็นจริงและองค์ประกอบสุดท้ายของ nums
  • คืนค่า True
  • มิฉะนั้น
    • คืนค่าเท็จ
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    def solve(nums):
       min_element = 999999
       min_index = -1
       min_element = min(nums)
       min_index = nums.index(min_element) before_sorted = True
       for i in range(1, min_index):
          if nums[i] < nums[i - 1]:
             before_sorted = False
             break
       after_sorted = True
       for i in range(min_index + 1, len(nums)):
          if nums[i] < nums[i - 1]:
             after_sorted = False
             break
       if before_sorted and after_sorted and nums[-1] < nums[0]:
          return True
       else:
          return False
    nums = [4,5,6,8,1,3]
    print(solve(nums))

    อินพุต

    [4,5,6,8,1,3]

    ผลลัพธ์

    True