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

পাইথনে সর্টেড লিস্টের বর্গ করা উপাদানগুলো সর্টেড অর্ডারে রিটার্ন করা

একটি এসেন্ডিং সর্টেড লিস্ট nums দেওয়া আছে। প্রতিটি উপাদান বর্গ করে ফলাফল সর্টেড অর্ডারে রিটার্ন করুন।

ইনপুট উদাহরণ

nums = [-8, -3, 0, 5, 6]

আউটপুট: [0, 9, 25, 36, 64]

অ্যালগরিদম (Two Pointers)

  1. দুই পয়েন্টার: l=0 (শুরু), r=n-1 (শেষ)।
  2. রেজাল্ট অ্যারে res পिछন থেকে ভরান (index = n-1)।
  3. যদি |nums[l]| > |nums[r]|: res[index] = nums[l]², l++।
  4. অন্যথায়: res[index] = nums[r]², r--।
  5. index--।

পাইথন কোড

def solve(nums):
    n = len(nums)
    l = 0
    r = n - 1
    index = n - 1
    res = [0] * n
    while index >= 0:
        if abs(nums[l]) > abs(nums[r]):
            res[index] = nums[l] * nums[l]
            l += 1
        else:
            res[index] = nums[r] * nums[r]
            r -= 1
        index -= 1
    return res

# টেস্ট
print(solve([-8, -3, 0, 5, 6]))  # [0, 9, 25, 36, 64]

ব্যাখ্যা

নেগেটিভ নম্বর বর্গ করলে বড় হয়। দুই পয়েন্টার দিয়ে বড় বর্গগুলো পिछন থেকে রাখলে সর্টেড রেজাল্ট পাওয়া যায়। সময় O(n), স্পেস O(n)।

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

  2. পাইথনে লিস্টের আকার বের করা

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

  4. পাইথনে তিনটি সোর্টেড অ্যারেতে সাধারণ উপাদান বের করার প্রোগ্রাম