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

การสลับดัชนีคู่และคี่ในลิสต์ Python

ภาพรวม

โจทย์สลับค่าที่ดัชนีคู่ (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]

อัลกอริทึม

  1. วนลูป i จาก 0 ถึง len-1 ข้ามทีละ 4
  2. ถ้า i+2 < length → สลับ nums[i] กับ nums[i+2] (ดัชนีคู่)
  3. ถ้า 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)ลิสต์
00↔2: 1↔31↔3: 2↔4[3,4,1,2,5,6,7,8,9]
44↔6: 5↔75↔7: 6↔8[3,4,1,2,7,8,5,6,9]
88+2=10≥9 ข้าม8+3=11≥9 ข้ามไม่เปลี่ยน

ผลลัพธ์

[3, 4, 1, 2, 7, 8, 5, 6, 9]