মান করুন একটি জঙ্গলে প্রতিটি খরগোশের কিছু রঙ রয়েছে। এখন খরগোশের কিছু সাবসেট (হয়তো সবাই) আমাদের বলবে কতগুলো অন্য খরগোশ তাদের মতো রঙের। সেই উত্তরগুলো একটি অ্যারেতে রাখা হয়। আমাদের বের করতে হবে জঙ্গলে কমপক্ষে কতগুলো খরগোশ থাকতে পারে।
যদি ইনপুট হয় [1,1,2], তবে আউটপুট হবে ৫। কারণ যেসে দুটি খরগোশ "১" উত্তর দিয়েছে সেগুলো একই রঙের হতে পারে, বলুন সাদা। যেটি "২" উত্তর দিয়েছে সেটি সাদা হতে পারে না কারণ তখন উত্তরগুলো কনসিস্টেন্ট হত না। বলুন সেটি কালো। তখন জঙ্গলে আরও ২টি কালো খরগোশ থাকতে হবে যারা উত্তর দেনি। তাই ন্যূনতম সম্ভাব্য খরগোশের সংখ্যা ৫: ৩টি উত্তর দিয়েছে + ২টি উত্তর দেনি।
এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −
- একটি ম্যাপ
mতৈরি করুন, এবংn := ansঅ্যারের আকার ret := 0সেট করুনi = 0থেকেn - 1পর্যন্তx := ans[i]- যদি
x == 0হয়, তবেret1 বৃদ্ধি করুন, এবং এই ইটারেশনের বাকি অংশ স্কিপ করুন - যদি
m-এxথাকে, তবেret += (x + 1)করুন,m[x] := 0সেট করুন - অন্যথায়
m[x]++করুন- যদি
m[x] == xহয়, তবেm-থেকেxডিলিট করুন
retফেরত দিন
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int numRabbits(vector<int>& ans) {
map <int, int> m;
int n = ans.size();
int ret = 0;
for(int i = 0; i < n; i++){
int x = ans[i];
if(x == 0){
ret++;
continue;
}
if(!m.count(x)){
ret += (x + 1);
m[x] = 0;
}else{
m[x]++;
if(m[x] == x){
m.erase(x);
}
}
}
return ret;
}
};
main(){
vector<int> v = {1,1,2};
Solution ob;
cout << (ob.numRabbits(v));
}
ইনপুট
[1,1,2]
আউটপুট
5