ধরুন আমাদের কাছে পূর্ণসংখ্যা A এর একটি অ্যারে রয়েছে, এখানে একটি পদক্ষেপের মধ্যে রয়েছে যে কোনো A[i] বেছে নেওয়া, এবং এটিকে 1 দ্বারা বৃদ্ধি করা। A-তে প্রতিটি মান অনন্য করার জন্য আমাদের সর্বনিম্ন সংখ্যক চাল খুঁজে বের করতে হবে। সুতরাং ইনপুট যদি [3,2,1,2,1,7] এর মত হয়, তাহলে আউটপুট হবে 6, যেমন 6টি মুভের পরে, অ্যারে হতে পারে [3,4,1,2,5,7], এটি 5 বা তার কম চাল দিয়ে দেখানো যেতে পারে যে অ্যারের জন্য সমস্ত স্বতন্ত্র মান থাকা অসম্ভব৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret:=0
-
সাজান অ্যারে এ
-
আগে কোন মান বিবেচনা করা হয় তা ট্র্যাক রাখতে ভিজিটড নামে একটি সেট তৈরি করুন
-
আমি রেঞ্জ 1 থেকে অ্যারের আকার A – 1
এর জন্য -
রিটার্ন রিটার্ন।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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