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

পাইথনে লিস্ট কি k-র চেয়ে বড় স্ট্রিক্টলি ইনক্রিজিং সাবলিস্টে ভাগ করা যায় কিনা যাচাই করার প্রোগ্রাম

একটি লিস্ট nums এবং একটি মান k দেওয়া আছে। যাচাই করতে হবে কি লিস্টকে এমন সাবলিস্টগুলিতে ভাগ করা যায় যাতে প্রতিটি সাবলিস্টের দৈর্ঘ্য k-র চেয়ে বড় বা সমান এবং স্ট্রিক্টলি ইনক্রিজিং হয়। সাবলিস্টগুলো কন্টিগুয়াস হতে হবে না।

উদাহরণস্বরূপ, nums = [6, 7, 5, 10, 13], k = 2 হলে আউটপুট True, কারণ [5,6] এবং [7,10,13]-এ ভাগ করা যায়।

সমাধানের পদ্ধতি (ফ্রিকোয়েন্সি-বেজড লজিক)

যেহেতু সাবলিস্টগুলো কন্টিগুয়াস হতে হবে না, তাই একই ভ্যালুয়ের এলিমেন্টগুলো আলাদা সাবলিস্টে যেতে হবে। সর্বোচ্চ ফ্রিকোয়েন্সি max_count হলে, কমপক্ষে max_countটি সাবলিস্ট লাগবে। প্রতিটি সাবলিস্টের দৈর্ঘ্য k হলে মোট এলিমেন্ট লাগবে max_count * k। তাই শর্ত: max_count * k <= len(nums)।

পাইথন কোড উদাহরণ

from collections import Counter

class Solution:
    def solve(self, nums, k):
        c = Counter(nums)
        max_count = max(c.values())
        return max_count * k <= len(nums)

ob = Solution()
nums = [6, 7, 5, 10, 13]
k = 2
print(ob.solve(nums, k))

ইনপুট

[6, 7, 5, 10, 13], 2

আউটপুট

True
  1. পাইথনে সব সन्नিহিত সাবলিস্টের যোগফলের যোগফল বের করার প্রোগ্রাম

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

  3. পাইথনে স্ট্রিংকে N আকারের টুকরোতে ভাগ করুন

  4. পাইথনে লিস্টের বিজোড় ও জোড় উপাদান আলাদা দুটি লিস্টে ভাগ করার প্রোগ্রাম