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

পাইথনে অ্যারে এলিমেন্ট যার লেফট ও রাইট সাম সমান সে সূচক বের করার প্রোগ্রাম

একটি লিস্ট nums দেওয়া আছে। সবচেয়ে ছোট সূচক i বের করুন যেখানে i-এর বামপাশের সংখ্যাগুলোর যোগফল = ডানপাশের যোগফল। না পেলে -1 রিটার্ন করুন।

উদাহরণ

nums = [8,2,3,6,5,2,5,9,1,2] → আউটপুট: 4

বাম: [8,2,3,6] = ১৯, ডান: [2,5,9,1,2] = ১৯

এলগরিদম (O(n))

  1. r := sum(nums), l := 0
  2. প্রতিটি i, x এর জন্য:
    • r -= x
    • যদি r == l: রিটার্ন i
    • l += x
  3. -1 রিটার্ন করুন।

পাইথন কোড

def solve(nums):
    r = sum(nums)
    l = 0
    for i, x in enumerate(nums):
        r -= x
        if r == l:
            return i
        l += x
    return -1

nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))  # আউটপুট: 4

ইনপুট / আউটপুট

[8,2,3,6,5,2,5,9,1,2]
4
  1. পাইথনে বাইনারি ট্রিতে নোড এবং এর ডিসেন্ডেন্টের মধ্যে সর্বোচ্চ পার্থক্য বের করার প্রোগ্রাম

  2. পাইথনে kটি সবচেয়ে বড় সাবলিস্ট সাম বের করে অ্যাসেন্ডিং অর্ডারে রিটার্ন করার প্রোগ্রাম

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

  4. পাইথনে অ্যারে-এর নিকটতম বাম ও ডান ছোট উপাদানের পার্থক্যের সর্বোচ্চ মান বের করা