สมมติว่าเรามีจำนวนอาร์เรย์และค่าเป้าหมายสองค่าที่แตกต่างกัน (เป้าหมายต้องมีเป็น nums) และเริ่มต้น เราต้องหาดัชนี i เพื่อให้ nums[i] =target และ |i - start| เป็นขั้นต่ำ เราต้องคืนค่า |i - start|.
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,4,5,6,7] target =7 start =2 ผลลัพธ์จะเป็น 2 เนื่องจากมีเพียงค่าเดียวที่ตรงกับเป้าหมาย นั่นคือ nums[4] ดังนั้น i =4 ตอนนี้ |4-2| =2.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
-
ขั้นต่ำ :=อินฟินิตี้
-
สำหรับฉันในช่วง 0 ถึงขนาดของ nums ทำ
-
ถ้า nums[i] เหมือนกับเป้าหมายแล้ว
-
ถ้า |i - เริ่ม| <ขั้นต่ำแล้ว
-
ขั้นต่ำ :=|i - start|
-
-
-
-
ผลตอบแทนขั้นต่ำ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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