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

ตรวจสอบว่าเป็นไปได้หรือไม่ที่จะเรียงลำดับอาร์เรย์ด้วยการสลับเงื่อนไขของที่อยู่ติดกันที่อนุญาตในPython


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

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

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

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

ตัวอย่าง

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

def solve(nums):
   for i in range(len(nums) - 1):
      if nums[i] > nums[i+1]:
         if nums[i] - nums[i+1] == 1:
            nums[i], nums[i+1] = nums[i+1], nums[i]
         else:
            return False
   return True
nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))

อินพุต

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

ผลลัพธ์

True