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

পাইথনে রোটেট করা অ্যারের সর্বাধিক ওজনযুক্ত যোগফল বের করার প্রোগ্রাম

একটি অ্যারে দেওয়া আছে। অ্যারের এলিমেন্টগুলো রোটেট (ঘুরিয়ে) করে সর্বাধিক ওজনযুক্ত যোগফল (weighted sum) বের করতে হবে। অ্যারে nums-এর ওজনযুক্ত যোগফল:

$$S = \sum_{i=1}^{n} i \times nums[i]$$

উদাহরণ

ইনপুট: L = [5,3,4]

আউটপুট: 26 কারণ:

  • অ্যারে [5,3,4]: যোগফল = 5 + 2×3 + 3×4 = 5 + 6 + 12 = 23
  • অ্যারে [3,4,5]: যোগফল = 3 + 2×4 + 3×5 = 3 + 8 + 15 = 26 (সর্বাধিক)
  • অ্যারে [4,5,3]: যোগফল = 4 + 2×5 + 3×3 = 4 + 10 + 9 = 23

সমাধানের ধাপসমূহ

  1. n := size of nums
  2. sum_a := sum of all elements in nums
  3. ans := sum of nums[i] * (i + 1) for i in range 0 to n
  4. cur_val := ans
  5. for i in range 0 to n - 1:
    • cur_val := cur_val - sum_a + nums[i] * n
    • ans := max(ans, cur_val)
  6. ans রিটার্ন করুন।

পাইথন কোড

def solve(nums):
    n = len(nums)
    sum_a = sum(nums)
    cur_val = ans = sum(nums[i] * (i + 1) for i in range(n))
    for i in range(n):
        cur_val = cur_val - sum_a + nums[i] * n
        ans = max(ans, cur_val)
    return ans

nums = [5, 3, 4]
print(solve(nums))

ইনপুট

[5,3,4]

আউটপুট

26

ব্যাখ্যা: O(n) টাইম কমপ্লেক্সিটিতে সমাধান করা হয়েছে। প্রতিটি রোটেশনের জন্য সম্পূর্ণ যোগফল রিক্যালকুলেট না করে স্মার্টলি আপডেট করা হয়েছে।

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

  2. পাইথনে একটি সংখ্যার বিষম গুণনীয়গুলোর যোগফল বের করার প্রোগ্রাম

  3. পাইথনে একটি সংখ্যার জোড় গুণনীয়গুলোর যোগফল বের করার প্রোগ্রাম

  4. পাইথনে অ্যারে গুণফলকে n দিয়ে ভাগ করার অবশেষ বের করার প্রোগ্রাম