ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে যেখানে প্রতিটি সংখ্যা একজন প্রার্থীকে ভোট প্রদান করে। আমাদের এমন প্রার্থীদের আইডি খুঁজে বের করতে হবে যাদের ফ্লোর(n/3) থেকে বেশি ভোট আছে, অ-হ্রাস ক্রমে।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7], তাহলে আউটপুট হবে [6, 7], যেমন 6 এবং 7-এ 40 আছে ভোটের %।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=একটি নতুন খালি সেট
- তালিকা সংখ্যা সাজান
- i :=0
- n :=সংখ্যার আকার
- যখন আমি <সংখ্যার আকার, কর
- যদি সংখ্যার সংঘটিত হয় [i] সংখ্যায়> (n / 3), তারপর
- সংখ্যা [i] উত্তরে প্রবেশ করান
- i :=i + (n / 3)
- যদি সংখ্যার সংঘটিত হয় [i] সংখ্যায়> (n / 3), তারপর
- বাছাই ক্রমে উত্তর দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums): ans = set([]) nums.sort() i = 0 n = len(nums) while i < len(nums): if nums.count(nums[i]) > n // 3: ans.add(nums[i]) i += n // 3 return sorted(list(ans)) ob = Solution() nums = [3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7] print(ob.solve(nums))
ইনপুট
[3, 2, 6, 6, 6, 6, 7, 7, 7, 7, 7]
আউটপুট
[6, 7]