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

C++-এ সর্টেড অ্যারে থেকে ডুপ্লিকেট রিমুভ II (প্রতিটি এলিমেন্ট সর্বোচ্চ দুবার থাকবে)


একটি সর্টেড অ্যারে দেওয়া আছে। ইন-প্লেসে ডুপ্লিকেট রিমুভ করতে হবে যাতে প্রতিটি এলিমেন্ট সর্বোচ্চ দুবার থাকে। এক্সট্রা স্পেস ব্যবহার করা যাবে না (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

  1. C# ব্যবহার করে সোর্টেড অ্যারেতে থেকে ডুপ্লিকেট সরিয়ে নন-ডুপ্লিকেটেড অ্যারে রিটার্ন করার পদ্ধতি

  2. C# ব্যবহার করে সোর্টেড অ্যারেতে থেকে ডুপ্লিকেট সরিয়ে দৈর্ঘ্য রিটার্ন করার পদ্ধতি

  3. ArrayList-এ ডুপ্লিকেট রিমুভ করার জাভা প্রোগ্রাম

  4. পাইথনে সোর্টেড অ্যারে থেকে ডুপ্লিকেট রিমুভ (Remove Duplicates from Sorted Array)