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

সি++-এ মিনিমাম ইনক্রিমেন্ট টু মেক অ্যারে ইউনিক (Minimum Increment to Make Array Unique)


মান লেযিয়ে একটি পূর্ণসংখ্যা অ্যারে A দেওয়া আছে। এখানে একটি মুভ হল যেকোনো A[i] বেছে নিয়ে সেটি ১ দিয়ে ইনক্রিমেন্ট করা। A-এর সব মান ইউনিক করার জন্য ন্যূনতম মুভ সংখ্যা খুঁজে বের করতে হবে। ইনপুট [3,2,1,2,1,7] হলে আউটপুট ৬। ৬ মুভ পর অ্যারে হতে পারে [3,4,1,2,5,7], ৫ বা কম মুভে সব ডISTINCT মান পাওয়া সম্ভব নয়।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -

  • ret := 0

  • অ্যারে A সর্ট করুন

  • visited নামে একটি সেট তৈরি করুন যাতে কোনো মান আগে বিবেচিত হয়েছে কিনা ট্র্যাক করা যায়

  • i = 1 থেকে A.size()-1 পর্যন্ত লুপ চালান

    • যদি A[i] <= A[i-1] হয়, ret := ret + (A[i-1] + 1) - A[i], এবং A[i] := A[i-1] + 1

  • ret রিটার্ন করুন

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

উদাহরণ

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int minIncrementForUnique(vector<int>& A) {       int ret = 0;       sort(A.begin(), A.end());       set <int> visited;       for(int i = 1; i < A.size(); i++){          if(A[i] <= A[i - 1]){             ret+= (A[i - 1] + 1) - A[i];             A[i] = A[i - 1] + 1;          }       }       return ret;    } }; main(){    vector<int> v1 = {3,2,1,2,1,7};    Solution ob;    cout << (ob.minIncrementForUnique(v1)); }

ইনপুট

[3,2,1,2,1,7]

আউটপুট

6

  1. C++-এ অ্যারে-এর XOR শূন্য করার জন্য মিনিমাম অপারেশন

  2. C++ ব্যবহার করে অ্যারের সব এলিমেন্ট ০ করার ন্যূনতম অপারেশন সংখ্যা

  3. C++-এ অ্যারের GCD কে k-এর গুণিতক বানানোর ন্যূনতম অপারেশন

  4. C++-এ কো-প্রাইম অ্যারে बनाने জন্য ন্যূনতম ইনসারশন