ภาพรวม
โจทย์สลับค่าที่ดัชนีคู่ (even index) ติดกัน และดัชนีคี่ (odd index) ติดกัน โดยข้ามทีละ 4 ตำแหน่ง
ตัวอย่าง
อินพุต: [1, 2, 3, 4, 5, 6, 7, 8, 9]
ดัชนีคู่: 0,2,4,6,8 → สลับ (0↔2), (4↔6), 8 คงเดิม
ดัชนีคี่: 1,3,5,7 → สลับ (1↔3), (5↔7)
เอาต์พุต: [3, 4, 1, 2, 7, 8, 5, 6, 9]
อัลกอริทึม
- วนลูป
iจาก 0 ถึง len-1 ข้ามทีละ 4 - ถ้า
i+2 < length→ สลับnums[i]กับnums[i+2](ดัชนีคู่) - ถ้า
i+3 < length→ สลับnums[i+1]กับnums[i+3](ดัชนีคี่)
โค้ด Python
class Solution:
def solve(self, nums):
length = len(nums)
for i in range(0, length, 4):
if i + 2 < length:
nums[i], nums[i+2] = nums[i+2], nums[i]
if i + 3 < length:
nums[i+1], nums[i+3] = nums[i+3], nums[i+1]
return nums
ob = Solution()
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(ob.solve(nums))
การทำงานทีละขั้น
| i | สลับคู่ (i↔i+2) | สลับคี่ (i+1↔i+3) | ลิสต์ |
|---|---|---|---|
| 0 | 0↔2: 1↔3 | 1↔3: 2↔4 | [3,4,1,2,5,6,7,8,9] |
| 4 | 4↔6: 5↔7 | 5↔7: 6↔8 | [3,4,1,2,7,8,5,6,9] |
| 8 | 8+2=10≥9 ข้าม | 8+3=11≥9 ข้าม | ไม่เปลี่ยน |
ผลลัพธ์
[3, 4, 1, 2, 7, 8, 5, 6, 9]