কম্পিউটার

C++ এ সাজানো অ্যারে II থেকে সদৃশগুলি সরান


ধরুন আমাদের একটি সাজানো অ্যারে সংখ্যা আছে, আমাদেরকে সদৃশ স্থানগুলিকে সরিয়ে ফেলতে হবে যাতে ডুপ্লিকেট উপাদানগুলি সর্বাধিক দুবার প্রদর্শিত হবে এবং নতুন দৈর্ঘ্য ফিরিয়ে দেবে। এই কাজটি করার জন্য আমরা অতিরিক্ত জায়গা নিতে পারি না। আমাদের এটিকে 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] or nums[i] !=nums[len - 1]
      • nums[len] :=nums[i], এবং len বাড়ান 1
  • লেন ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#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. জাভা প্রোগ্রাম একটি অ্যারে তালিকা থেকে সদৃশ অপসারণ

  4. পাইথনে সাজানো অ্যারে থেকে সদৃশগুলি সরান