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

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


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

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[10, 30, 20, 40] เอาต์พุตจะเป็น True เนื่องจากวาง 10 ไว้ที่ตำแหน่งเดิมและองค์ประกอบอื่นๆ ทั้งหมดจะอยู่ห่างจากตำแหน่งจริงเพียงตำแหน่งเดียว

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

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

ตัวอย่าง

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

def solve(nums):
   i = 0
   while i < len(nums) - 1:
      if nums[i] > nums[i + 1]:
         nums[i], nums[i + 1] = nums[i + 1], nums[i]
         i += 1
      i += 1
   for i in range(len(nums) - 1):
      if nums[i] > nums[i + 1]:
         return False
   return True
nums = [10, 30, 20, 40]
print(solve(nums))

อินพุต

[10, 30, 20, 40]

ผลลัพธ์

True