Giả sử chúng ta có một mảng được gọi là nums. Chúng ta có thể thay đổi một phần tử từ mảng này thành bất kỳ giá trị nào trong một lần di chuyển. Chúng ta phải tìm ra sự khác biệt nhỏ nhất giữa giá trị lớn nhất và nhỏ nhất của nums sau khi định dạng trước nhiều nhất là 3 lần di chuyển.
Vì vậy, nếu đầu vào giống như nums =[3,7,2,12,16], thì đầu ra sẽ là 1 vì chúng ta có thể tạo mảng đã cho thành [1,1,0,1,1], vì vậy giá trị lớn nhất là 1 và tối thiểu là 0, do đó, sự khác biệt là 1.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nếu kích thước của nums <=4, thì
-
trả về 0
-
-
sắp xếp số lượng danh sách
-
ans:=infinity
-
đối với tôi trong phạm vi từ 0 đến 3, hãy thực hiện
-
mi:=nums [i]
-
ma:=nums [độ dài của nums - (3-i + 1)]
-
ans:=tối thiểu ma-mi và ans
-
-
trả lại ans
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[3,7,2,12,16]
Đầu ra
1