สมมติว่าเรามีอาร์เรย์ของตัวเลขที่เรียกว่า 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
- ถ้า nums[i]> nums[i + 1] แล้ว
- สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
- ถ้า nums[i]> nums[i + 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