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

โปรแกรม Python หมุนอาร์เรย์ไปทางขวา (Right Rotate)


หมุนลิสต์ไปทางขวา n ตำแหน่ง โดยย้ายองค์ประกอบท้ายสุดมาหน้าสุด ทำซ้ำ n ครั้ง

ตัวอย่างโค้ด

arr = [31, 42, 13, 34, 85, 0, 99, 1, 3]
n = 3
print("Original:", arr)
print(f"Right rotate by {n}")

for _ in range(n):
    last = arr[-1]
    for i in range(len(arr)-1, 0, -1):
        arr[i] = arr[i-1]
    arr[0] = last

print("Rotated:", arr)

ผลลัพธ์

Original: [31, 42, 13, 34, 85, 0, 99, 1, 3]
Right rotate by 3
Rotated: [99, 1, 3, 31, 42, 13, 34, 85, 0]

คำอธิบาย

  • ทำซ้ำ n ครั้ง: เก็บค่าตัวสุดท้าย, เลื่อนทุกตัวไปขวา 1, วางค่าที่เก็บไว้ที่ index 0

  • ลูปใน: range(len-1, 0, -1) เดินจากขวาไปซ้าย

  • วิธีมีประสิทธิภาพกว่า: arr[-n:] + arr[:-n] (slicing)

  • หรือ collections.deque กับ rotate(n)