สมมติว่าเรามีอาร์เรย์ nums และค่า target (ซึ่งมีอยู่ใน nums แน่นอน) และ start เราต้องหา index i ที่ nums[i] = target และ |i - start| น้อยที่สุด คืนค่า |i - start| นั้น
เช่น nums = [3,4,5,6,7] target = 7 start = 2 ผลลัพธ์คือ 2 เพราะ nums[4] = 7 ดังนั้น i = 4, |4-2| = 2
ขั้นตอนการแก้ปัญหา
- minimum = infinity
- วนลูป i จาก 0 ถึง len(nums)-1:
- ถ้า nums[i] == target:
- ถ้า |i - start| < minimum: minimum = |i - start|
- ถ้า nums[i] == target:
- คืนค่า minimum
ตัวอย่างโค้ด
from math import inf
def solve(nums, target, start):
minimum = inf
for i in range(len(nums)):
if nums[i] == target:
if abs(i - start) < minimum:
minimum = abs(i - start)
return minimum
nums = [3,4,5,6,7]
target = 7
start = 2
print(solve(nums, target, start))
ข้อมูลเข้า
[3,4,5,6,7], 7, 2
ข้อมูลออก
2