মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে এবং আমরা সেটি থেকে দুটি জোড়া সংখ্যা বেছে নিতে চাই যাতে সেই দুটি জোড়ার যোগফলের परम পার্থক্য ন্যূনতম হয়।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [3, 4, 5, 10, 7], তবে আউটপুট হবে 1, কারণ আমরা জোড়াগুলো বেছে নিতে পারি (3+7) - (4+5) = 1।
distances :=একটি নতুন তালিকাiকে ০ থেকেlen(nums)-2পর্যন্ত লুপ চালান:jকেi+1থেকেlen(nums)-1পর্যন্ত লুপ চালান:[abs(nums[i]-nums[j]), i, j]কেdistances-র শেষে ঢুকান
distancesতালিকাটি সর্ট করুন।ans := 1e9iকে ০ থেকেlen(distances)-2পর্যন্ত লুপ চালান:[dist, i1, i2] := distances[i]j := i + 1[dist2, i3, i4] := distances[j]j < len(distances)এবং{i1, i2, i3, i4}এর এলিমেন্টগুলো ইউনিক না হলে লুপ চালান:[dist2, i3, i4] := distances[j]j := j + 1
- যদি
{i1, i2, i3, i4}এর এলিমেন্টগুলো ইউনিক হয়, তবে:ans := min(ans, dist2 - dist)
ansরিটার্ন করুন।
class Solution:
def solve(self, nums):
distances = []
for i in range(len(nums) - 1):
for j in range(i + 1, len(nums)):
distances.append((abs(nums[i] - nums[j]), i, j))
distances.sort()
ans = 1e9
for i in range(len(distances) - 1):
dist, i1, i2 = distances[i]
j = i + 1
dist2, i3, i4 = distances[j]
while j < len(distances) and len({i1, i2, i3, i4}) != 4:
dist2, i3, i4 = distances[j]
j += 1
if len({i1, i2, i3, i4}) == 4:
ans = min(ans, dist2 - dist)
return ans
ob = Solution()
nums = [3, 4, 5, 10, 7]
print(ob.solve(nums))
[3, 4, 5, 10, 7]
1