ধরুন আমাদের একটি অ-ঋণাত্মক পূর্ণসংখ্যা সংখ্যা আছে৷ 0 ≤ i ≤ num রেঞ্জের প্রতিটি সংখ্যার জন্য আমাদের তাদের বাইনারি কাউন্টারপার্টে 1 এর সংখ্যা গণনা করতে হবে এবং তাদের একটি তালিকা হিসাবে ফেরত দিতে হবে। সুতরাং যদি সংখ্যাটি 5 হয়, তাহলে সংখ্যাগুলি হল [0, 1, 2, 3, 4, 5], এবং এই সংখ্যাগুলির মধ্যে 1s সংখ্যা হল [0, 1, 1, 2, 1, 2]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=একটি অ্যারে যা 0s এর num + 1 সংখ্যা ধারণ করে
- অফসেট :=0
- আমি 1 থেকে num + 1
- পরিসরে
- যদি i এবং i – 1 =0, তারপর res[i] :=1 এবং অফসেট :=0
- অন্যথায় 1 দ্বারা অফসেট বৃদ্ধি করুন এবং res[i] :=1 + res[অফসেট]
- রিটার্ন রিটার্ন
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution: def countBits(self, num): result = [0] * (num+1) offset = 0 for i in range(1,num+1): if i & i-1 == 0: result[i] = 1 offset = 0 else: offset+=1 result[i] = 1 + result[offset] return result ob1 = Solution() print(ob1.countBits(6))
ইনপুট
6
আউটপুট
[0, 1, 1, 2, 1, 2, 2]