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

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


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่าเราสามารถจัดเรียง nums ได้หรือไม่โดยใช้การหมุน ด้วยการหมุน เราสามารถเปลี่ยนองค์ประกอบที่อยู่ติดกันบางส่วนจากจุดสิ้นสุดของ nums และวางไว้ที่ด้านหน้าของอาร์เรย์ได้

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

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

  • n :=ขนาดของ nums
  • ถ้าเรียงลำดับแล้ว
    • คืนค่า True
  • มิฉะนั้น
    • สถานะ :=จริง
    • สำหรับฉันในช่วง 0 ถึง n - 2 ทำ
      • ถ้า nums[i]> nums[i + 1] แล้ว
        • ออกมาจากลูป
    • ผม :=ผม + 1
    • สำหรับ k ในช่วง i ถึง n - 2 ทำ
      • ถ้า nums[k]> nums[k + 1] แล้ว
        • สถานะ :=เท็จ
        • ออกมาจากลูป
    • ถ้าสถานะเป็นเท็จ
      • คืนค่าเท็จ
    • มิฉะนั้น
      • ถ้า nums[n - 1] <=nums[0] แล้ว
        • คืนค่า True
      • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(nums):
   n = len(nums)
   if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)):
      return True
   else :
      status = True
      for i in range(n - 1) :
         if nums[i] > nums[i + 1] :
            break
      i += 1
      for k in range(i, n - 1) :
         if nums[k] > nums[k + 1]:
            status = False
            break
      if not status:
         return False
      else :
         if nums[n - 1] <= nums[0]:
            return True
         return False
nums = [4,5,6,1,2,3]
print(solve(nums))

อินพุต

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

ผลลัพธ์

True