สมมติว่าเรามีอาร์เรย์ของตัวเลขที่เรียกว่า 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]
- มิฉะนั้น
- คืนค่าเท็จ
- ถ้า 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