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

โปรแกรมหาองค์ประกอบที่ i หลังหมุนขวา k ครั้งใน Python

การหาองค์ประกอบที่ index i หลังการหมุนขวา k ครั้ง

หมุนอาร์เรย์ขวา k ครั้ง (ย้ายตัวสุดท้ายไปหน้า) หาค่าที่ index i

อัลกอริทึม

  1. วน k รอบ: pop() ตัวสุดท้าย insert(0, popped)
  2. คืนค่า 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]