একটি সর্টেড অ্যারে দেওয়া আছে। ইন-প্লেসে ডুপ্লিকেট রিমুভ করতে হবে যাতে প্রতিটি এলিমেন্ট সর্বোচ্চ দুবার থাকে। এক্সট্রা স্পেস ব্যবহার করা যাবে না (O(1) স্পেস)। উদাহরণ: [0,0,0,1,1,1,1,2,3,3] -> [0,0,1,1,2,3,3], লেন্থ ৭।
সমাধান: len=2, n=size। n<=2 হলে n রিটার্ন। i=2 থেকে n-1 পর্যন্ত: nums[i] != nums[len-2] বা nums[i] != nums[len-1] হলে nums[len]=nums[i], len++। अन्तে len রিটার্ন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = 2;
int n = nums.size();
if(n <= 2)return n;
for(int i = 2; i < n; i++){
if( nums[i] != nums[len - 2] || nums[i] != nums[len - 1]){
nums[len] = nums[i];
len++;
}
}
return len;
}
};
main(){
Solution ob;
vector<int> v = {0,0,0,1,1,1,1,2,3,3};
cout << ob.removeDuplicates(v);
}
ইনপুট
[0,0,0,1,1,1,1,2,3,3]
আউটপুট
7