কম্পিউটার

পাইথনে নেস্টেড তালিকার ওজন যোগফল II


পূর্ণসংখ্যার একটি নেস্টেড তালিকা দেওয়া, তাদের গভীরতা দ্বারা ওজন করা তালিকার সমস্ত পূর্ণসংখ্যার যোগফল ফেরত দিন। প্রতিটি উপাদান হয় একটি পূর্ণসংখ্যা, বা একটি তালিকা -- যার উপাদানগুলিও পূর্ণসংখ্যা বা অন্যান্য তালিকা হতে পারে। আগের প্রশ্ন থেকে ভিন্ন যেখানে ওজন মূল থেকে পাতা পর্যন্ত বাড়ছে, এখন ওজন নীচে থেকে উপরে সংজ্ঞায়িত করা হয়েছে। অর্থাৎ, পাতার স্তরের পূর্ণসংখ্যাগুলির ওজন 1, এবং মূল স্তরের পূর্ণসংখ্যাগুলির ওজন সবচেয়ে বেশি৷

সুতরাং, যদি ইনপুটটি [[1,1],2,[1,1]] এর মত হয়, তাহলে আউটপুট হবে 8, যেমন চারটি 1 এর গভীরতা 1, একটি 2 গভীরতা 2।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন depthSumInverse() সংজ্ঞায়িত করুন। এটি নেস্টডলিস্ট গ্রহণ করবে

  • ফ্ল্যাট:=একটি নতুন তালিকা

  • maxd:=0

  • একটি ফাংশন flatten() সংজ্ঞায়িত করুন। এটি nlst,dist

    লাগবে
  • dist :=dist + 1

  • maxd:=maxd এর সর্বোচ্চ, dist

  • nlst-এ প্রতিটি নোডের জন্য, করুন

    • যদি নোড একটি পূর্ণসংখ্যা হয় অ-শূন্য, তাহলে

      • ফ্ল্যাটের শেষে সন্নিবেশ করুন (নোড, ডিস্ট)

    • অন্যথায়,

      • সমতল (নোড, ডিস্ট)

  • সমতল (নেস্টেডলিস্ট, 0)

  • যোগফল:=0

  • ফ্ল্যাটে প্রতিটি v,d এর জন্য করুন

    • summ :=summ + v*(maxd+1-d)

  • ফেরত যোগফল

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

শ্রেণীর সমাধান(অবজেক্ট):def depthSumInverse(self, nestedList):flats=[] self.maxd=0 def flatten(nlst,dist):if isinstance(nlst,list):nlst=nlst dist+=1 self। nlst এ নোডের জন্য maxd=max(self.maxd,dist):if isinstance(node,int):flats.append((node,dist)) else:flatten(node,dist) flatten(nestedList,0) summ=0 ফ্ল্যাটে v,d এর জন্য:summ+=v*(self.maxd+1-d) রিটার্ন summob =Solution()print(ob.depthSumInverse([[1,1],2,[1,1]])) 

ইনপুট

[[1,1],2,[1,1]]

আউটপুট

8

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

  2. পাইথন প্রোগ্রাম একটি তালিকার ক্রমবর্ধমান যোগফল খুঁজে বের করতে

  3. পাইথন প্রোগ্রাম তালিকায় উপাদানের যোগফল খুঁজে বের করতে

  4. পাইথনে সংখ্যার তালিকার যোগফল কীভাবে খুঁজে পাবেন?