สมมติว่าเรามีอาร์เรย์ A ของจำนวนเต็ม ตอนนี้สำหรับแต่ละจำนวนเต็ม A[i] เราสามารถเลือก x ใดๆ ที่มีช่วง [-K ถึง K] แล้วเพิ่ม x ลงใน A[i] หลังจากขั้นตอนนี้ เรามีอาร์เรย์ B บางส่วน เราต้องหาความแตกต่างที่น้อยที่สุดที่เป็นไปได้ระหว่างค่าสูงสุดของ B และค่าต่ำสุดของ B
ดังนั้น หากอินพุตเป็น A =[0,10], K =2 เอาต์พุตจะเป็น 6 เนื่องจาก B =[2,8]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- MAX :=(สูงสุด A) - K
- MIN :=(ขั้นต่ำของ A) + K
- ความแตกต่าง :=MAX - MIN
- ถ้าผลต่าง <0 ไม่ใช่ศูนย์ แล้ว
- คืน 0
- มิฉะนั้นผลตอบแทนส่วนต่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def smallestRangeI(self, A, K): MAX = max(A)-K MIN = min(A)+K difference = MAX-MIN if difference <0: return 0 else: return difference ob = Solution() print(ob.smallestRangeI([0,10],2))
อินพุต
[0,10],2
ผลลัพธ์
6