কম্পিউটার টিউটোরিয়াল

পাইথনে দুটি লিস্ট থেকে সর্বোচ্চ ডিস্ট্যান্স পেইর বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে সমান দৈর্ঘ্যের দুটি সংখ্যার তালিকা A এবং B আছে। আমাদের কাজ হল সব 0 <= i < j < n এর জন্য |a[i] - a[j]| + |b[i] - b[j]| + |i - j|-র সর্বোচ্চ মান বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় A = [2, 4, 10, 6] এবং B = [3, 4, 7, 5], তবে আউটপুট হবে 14, কারণ i=0 এবং j=2 হলে |2-10| + |3-7| + |1-3| = 14 পাওয়া যায়।

সমাধানের ধাপসমূহ:
  • ans := 0
  • n := len(a)
  • প্রতিটি জোড়া (s, t) এর জন্য [(-1,-1), (-1,1), (1,-1), (1,1)]-এ:
    • cur_min := infinity, cur_max := -infinity
    • i কে ০ থেকে n পর্যন্ত লুপ চালান:
      • tmp := s*a[i] + t*b[i] + i
      • cur_min := min(cur_min, tmp)
      • cur_max := max(cur_max, tmp)
    • ans := max(ans, cur_max - cur_min)
  • ans রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, a, b):
        ans = 0
        n = len(a)
        for s, t in [(-1, -1), (-1, 1), (1, -1), (1, 1)]:
            cur_min = float("inf")
            cur_max = float("-inf")
            for i in range(n):
                tmp = s * a[i] + t * b[i] + i
                cur_min = min(cur_min, tmp)
                cur_max = max(cur_max, tmp)
            ans = max(ans, cur_max - cur_min)
        return ans

ob = Solution()
A = [2, 4, 10, 6]
B = [3, 4, 7, 5]
print(ob.solve(A, B))
ইনপুট
[2, 4, 10, 6],[3, 4, 7, 5]
আউটপুট
14
  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে বড় সংখ্যা বের করা

  2. দুই সর্টেড অ্যারে থেকে নিকটতম জোড়া বের করার পাইথন প্রোগ্রাম

  3. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা

  4. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা