কম্পিউটার

C++ এ সাজানো তালিকা থেকে সদৃশগুলি সরান


ধরুন আমাদের একটি বাছাই করা লিঙ্ক তালিকা আছে; আমাদের সমস্ত সদৃশ মুছে ফেলতে হবে যাতে প্রতিটি উপাদান একবারই প্রদর্শিত হয়।

সুতরাং, ইনপুট যদি [1,1,2,3,3,3,4,5,5] এর মত হয়, তাহলে আউটপুট হবে [1,2,3,4,5]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • dummy :=মান -inf

    দিয়ে একটি নতুন নোড তৈরি করুন
  • ডামির পরের :=মাথা

  • curr =ডামি

  • যখন curr অ-শূন্য হয়, −

    করুন
    • next =curr এর পরবর্তী

    • যখন (পরবর্তীটি নাল নয় এবং পরবর্তীটির ভ্যালটি curr এর ভ্যালের মতো), করো −

      • পরবর্তী :=পরের পরবর্তী

    • curr এর পরবর্তী :=পরবর্তী

    • curr :=পরবর্তী

  • ডামির পরের দিকে ফিরে যান

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
class ListNode{
   public:
      int val;
      ListNode *next;
      ListNode(int data){
         val = data;
         next = NULL;
      }
};
ListNode *make_list(vector<int> v){
   ListNode *head = new ListNode(v[0]);
   for(int i = 1; i<v.size(); i++){
      ListNode *ptr = head;
      while(ptr->next != NULL){
         ptr = ptr->next;
      }
      ptr->next = new ListNode(v[i]);
   }
   return head;
}
void print_list(ListNode *head){
   ListNode *ptr = head;
   cout << "[";
   while(ptr){
      cout << ptr->val << ", ";
      ptr = ptr->next;
   }
   cout << "]" << endl;
}
class Solution {
public:
   ListNode* deleteDuplicates(ListNode* head) {
      ListNode*dummy = new ListNode(INT_MIN);
      dummy->next = head;
      ListNode * curr = dummy;
      while(curr){
         ListNode * next = curr->next;
         while(next && next->val==curr->val)
            next = next->next;
         curr->next = next;
         curr=next;
      }
      return dummy->next;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,2,3,3,3,4,5,5};
   ListNode *head = make_list(v);
   print_list(ob.deleteDuplicates(head));
}

ইনপুট

{1,1,2,3,3,3,4,5,5}

আউটপুট

[1, 2, 3, 4, 5, ]

  1. পাইথনে একটি তালিকা থেকে ডুপ্লিকেটগুলি কীভাবে সরানো যায়

  2. জাভাস্ক্রিপ্ট ব্যবহার করে একটি লিঙ্ক তালিকা থেকে উপাদান সরান

  3. জাভাস্ক্রিপ্টে এককভাবে লিঙ্ক করা তালিকা থেকে উপাদানগুলি সরান

  4. অ্যান্ড্রয়েডে বাছাই করা লিঙ্ক তালিকা থেকে ডুপ্লিকেটগুলি কীভাবে সরিয়ে ফেলা যায়?