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

পাইথনে প্রথম ও শেষ মান সমান সাবলিস্টের সংখ্যা খুঁজে বের করার প্রোগ্রাম


মনে করুন nums নামক একটি সংখ্যার তালিকা আছে, আমাদের সেই সাবলিস্টের সংখ্যা খুঁজে বের করতে হবে যেখানে প্রথম এবং শেষ উপাদান সমান।

উদাহরণস্বরূপ, nums = [10, 15, 13, 10] হলে আউটপুট হবে ৫, কারণ সাবলিস্টগুলো: [10], [15], [13], [10], [10, 15, 13, 10]।

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

  • num_sublists := nums-এর আকার
  • d := খালি ম্যাপ
  • প্রতিটি n nums-এ,
    • d[n] := d[n] + 1
  • প্রতিটি k,v d-এ,
    • যদি v != 1, তবে
      • num_sublists += (v-1)*v//2
  • num_sublists ফেরত দিন

উদাহরণ

from collections import defaultdict
class Solution:
    def solve(self, nums):
        num_sublists = len(nums)
        d = defaultdict(int)
        for n in nums:
            d[n] += 1
        for k,v in d.items():
            if v != 1:
                num_sublists += (v-1)*(v)//2
        return num_sublists

ob = Solution()
nums = [10, 15, 13, 10]
print(ob.solve(nums))

ইনপুট

[10, 15, 13, 10]

আউটপুট

5
  1. পাইথনে প্রথম থেকে শেষ নোড পর্যন্ত রেস্ট্রিক্টেড পথের সংখ্যা বের করার প্রোগ্রাম

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

  3. পাইথনে গ্লোবাল ও লোকাল ইনভারশনের সংখ্যা সমান কিনা চেক করার প্রোগ্রাম

  4. পাইথনে দুটি বাইনারি ট্রি কন্ট্রাক্ট ও মান দিয়ে সমান (Twin Trees) কিনা যাচাই করা