หมุนลิสต์ไปทางขวา 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)