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

পাইথনে সর্টেড অ্যারেতে অ্যাবসোলিউট পার্থক্যের যোগফল বের করার প্রোগ্রাম


মনে করুন nums নামক একটি অ্যারে আছে যা নন-ডিক্রিজিং অর্ডারে সর্টেড। আমাদের result নামক একটি অ্যারে বানাতে হবে যেটার দৈর্ঘ্য nums-এর সমান এবং result[i] হলো nums[i] এবং অ্যারেতে থাকা বাকি সব এলিমেন্টের মধ্যবর্তী অ্যাবসোলিউট পার্থক্যের যোগফল।

যেমন, ইনপুট nums = [5,7,12] হলে, আউটপুট হবে [9, 7, 12] কারণ:

  • |5-5| + |5-7| + |5-12| = 0+2+7 = 9
  • |7-5| + |7-7| + |7-12| = 2+0+5 = 7
  • |5-12| + |7-12| + |12-12| = 7+5+0 = 12

সমাধান পদ্ধতি

এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  • res := একটি নতুন লিস্ট
  • s := 0
  • n := nums-এর সাইজ
  • i = 1 থেকে n-1 পর্যন্ত
    • s := s + nums[i] - nums[0]
  • s কে res-এ অ্যাপেন্ড করুন
  • i = 1 থেকে n-1 পর্যন্ত
    • diff := nums[i] - nums[i-1]
    • s := s + diff * i
    • s := s - diff * (n-i)
    • s কে res-এ অ্যাপেন্ড করুন
  • res রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:

 def solve(nums):    res = []    s=0    n = len(nums)    for i in range(1,n):       s+=nums[i]-nums[0]    res.append(s)    for i in range(1,n):       diff = nums[i]-nums[i-1]       s += diff*i       s -= diff *(n-i)       res.append(s)    return res nums = [5,7,12] print(solve(nums))

ইনপুট

[5,7,12] 

আউটপুট

[9, 7, 12]

  1. লিস্টের কিউমুলেটিভ সাম বের করার পাইথন প্রোগ্রাম

  2. পাইথনে অ্যারের যোগফল বের করা

  3. পাইথনে লিস্টের সব পেয়ারের অ্যাবসোলিউট ডিফারেন্সের যোগফল

  4. পাইথনে ইনসারশন সর্ট প্রোগ্রাম