สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums เราสามารถเปลี่ยนหนึ่งองค์ประกอบจากอาร์เรย์นี้เป็นค่าใดก็ได้ในการย้ายครั้งเดียว เราต้องหาค่าความแตกต่างขั้นต่ำระหว่างค่า nums ที่ใหญ่ที่สุดและน้อยที่สุดหลังจาก preforming ไม่เกิน 3 การเคลื่อนไหว
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,7,2,12,16] ผลลัพธ์จะเป็น 1 เพราะเราสามารถกำหนดให้อาร์เรย์ที่กำหนดเป็น [1,1,0,1,1] ค่าสูงสุดคือ 1 และค่าต่ำสุดคือ 0 ดังนั้นผลต่างคือ 1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้าขนาดของ nums <=4 แล้ว
-
คืนค่า 0
-
-
เรียงเลขรายการ
-
ตอบ :=อนันต์
-
สำหรับผมอยู่ในช่วง 0 ถึง 3 ทำ
-
mi :=nums[i]
-
ma :=nums[length of nums -(3-i+1)]
-
ans :=ขั้นต่ำของ ma-mi และ ans
-
-
กลับมาอีกครั้ง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(nums): if len(nums) <= 4: return 0 nums.sort() ans = float("inf") for i in range(4): mi = nums[i] ma = nums[-(3-i+1)] ans = min(ma-mi,ans) return ans nums = [3,7,2,12,16] print(solve(nums))
อินพุต
[3,7,2,12,16]
ผลลัพธ์
1