ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে এবং আমরা তা থেকে দুটি জোড়া সংখ্যা নির্বাচন করতে চাই যাতে এই দুটি জোড়ার যোগফলের মধ্যে পরম পার্থক্য কম হয়।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 4, 5, 10, 7], তাহলে আউটপুট হবে 1, যেহেতু আমরা এই জোড়াগুলি (3 + 7) - (4 + 5) =1 নির্বাচন করতে পারি।পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- দূরত্ব :=একটি নতুন তালিকা
- আমি 0 থেকে সংখ্যার আকার - 2 এর মধ্যে, কর
- j এর জন্য i + 1 থেকে nums - 1 এর আকার, do
- একটি তালিকা [|সংখ্যা[i] - সংখ্যা[j]| সন্নিবেশ করান , i, j] দূরত্বের শেষে
- তালিকা দূরত্ব বাছাই করুন
- উত্তর :=1^9
- আমার জন্য 0 থেকে দূরত্বের আকার - 2, করুন
- [dist, i1, i2] :=দূরত্ব[i]
- j :=i + 1
- [dist2, i3, i4] :=দূরত্ব[j]
- যদিও j <দূরত্বের আকার এবং (i1, i2, i3, i4) উপাদানগুলি অনন্য নয়, করুন
- [dist2, i3, i4] :=দূরত্ব[j]
- j :=j + 1
- যদি (i1, i2, i3, i4) উপাদানগুলি অনন্য হয়, তাহলে
- উত্তর :=সর্বনিম্ন উত্তর এবং (dist2 - dist)
- উত্তর ফেরত দিন
- j এর জন্য i + 1 থেকে nums - 1 এর আকার, do
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
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