মনে করুন 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]