Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में क्रमबद्ध सरणी से डुप्लिकेट हटाना II (Remove Duplicates from Sorted Array II)


मान लीजिए हमारे पास एक क्रमबद्ध सरणी nums है, हमें डुप्लिकेट को स्थानांतरित (in-place) हटाना है ताकि डुप्लिकेट तत्व अधिकतम दो बार दिखाई दें और नई लंबाई वापस करें। इस कार्य के लिए हम अतिरिक्त स्थान नहीं ले सकते। हमें इसे O(1) अतिरिक्त स्थान के साथ हल करना है। उदाहरण के लिए, यदि सरणी [0,0,0,1,1,1,1,2,3,3] है, तो आउटपुट [0,0,1,1,2,3,3] होगा, इसकी लंबाई 7 है।

आइए चरण देखें:

  • len := 2 और n := सरणी का आकार
  • यदि n <= 2, तो n वापस करें
  • i := 2 से n तक:
    • यदि nums[i] != nums[len - 2] या nums[i] != nums[len - 1]:
      • nums[len] := nums[i], और len को 1 बढ़ाएं
  • 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;
    }
};

int 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# का उपयोग करके सॉर्टेड ऐरे से डुप्लिकेट हटाकर लंबाई कैसे लौटाएं?

    ऐरे पहले से सॉर्टेड है, हम दो पॉइंटर्स ii और jj रख सकते हैं, जहां ii धीमा-धावक है जबकि jj तेज-धावक है। जब तक nums[i] = nums[j], हम jj को बढ़ाकर डुप्लिकेट को छोड़ देते हैं। जब हमें nums[j] != nums[i] मिलता है तो डुप्लिकेट रन समाप्त हो गया है इसलिए हमें इसका मान nums[i + 1] पर कॉपी करना होगा। ii को फ

  1. - Java प्रोग्राम: ArrayList से डुप्लिकेट्स हटाना

    इस लेख में हम समझेंगे कि Java में ArrayList से डुप्लिकेट्स कैसे हटाए जाते हैं। लिस्ट एक क्रमबद्ध संग्रह है जो हमें एलिमेंट्स को क्रमिक रूप से स्टोर और एक्सेस करने की अनुमति देता है। उदाहरण इनपुट: The list is defined as: [Java, Scala, Python, Java] आउटपुट: The list after removing the duplicates: [J

  1. - पायथन में क्रमबद्ध सरणी से डुप्लिकेट हटाएं

    मान लीजिए हमारे पास एक क्रमबद्ध सूची A है। हमें सभी डुप्लिकेट प्रविष्टियों को हटाने के बाद सरणी की लंबाई वापस करनी है। हमें इसे O(1) अतिरिक्त स्थान में करना है। इसलिए हमें इन-प्लेस ऑपरेशन करना होगा। उदाहरण के लिए, मान लीजिए A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] तो आउटपुट 6 होगा, क्योंकि छह