การหาองค์ประกอบที่ index i หลังการหมุนขวา k ครั้ง
หมุนอาร์เรย์ขวา k ครั้ง (ย้ายตัวสุดท้ายไปหน้า) หาค่าที่ index i
อัลกอริทึม
- วน k รอบ: pop() ตัวสุดท้าย insert(0, popped)
- คืนค่า nums[i]
ตัวอย่างโค้ด
def solve(nums, k, i):
for r in range(k):
nums.insert(0, nums.pop())
return nums[i]
nums = [2,7,9,8,10]
k = 3
i = 2
print(solve(nums, k, i))
ผลลัพธ์
10
คำอธิบาย
เดิม: [2,7,9,8,10]
หมุน 1: [10,2,7,9,8]
หมุน 2: [8,10,2,7,9]
หมุน 3: [9,8,10,2,7]
index 2 = 10
วิธีเร็วกว่า (O(1))
def solve_fast(nums, k, i):
n = len(nums)
k = k % n
new_index = (i - k) % n
return nums[new_index]