Table of Contents
Problem Statement:
Minimum Increment to Make Array Unique Leetcode Solution – You are given an integer array nums. In one move, you can pick an index i where 0 <= i < nums.length
and increment nums[i] by 1.
Return the minimum number of moves to make every value in nums unique.
Example:
Example 1:
Input: nums = [1,2,2]
Output: 1
Explanation:
After 1 move, the array could be [1, 2, 3].
Example 2:
Input: nums = [3,2,1,2,1,7]
Output: 6
Explanation:
After 6 moves, the array could be [3, 4, 1, 2, 5, 7].
It can be shown with 5 or fewer moves that it is impossible for the array to have all unique values.
Approach:
Idea:
- First, we need to sort the given array.
- When we find the condition that the current element is less than or equal to the previous elements then we need to update the current array element A[i] by A[i-1]+1.
- Also, in every iteration we need to keep track of results by result += A[i-1]+ 1 – A[i].
- Finally, we need to return the value stored in the result variable.
Code:
C++ Program of Minimum Increment to Make Array Unique:
class Solution { public: int minIncrementForUnique(vector<int>& nums) { sort(nums.begin(), nums.end()); long long c=0; for(int i=1;i<nums.size();i++){ if(nums[i]<=nums[i-1]){ c+=nums[i-1]+1-nums[i]; nums[i]=nums[i-1]+1; } } return c; } };
Java Program of Minimum Increment to Make Array Unique:
class Solution { public int minIncrementForUnique(int[] nums) { Arrays.sort(nums); int c=0; for(int i=1;i<nums.length;i++){ if(nums[i]<=nums[i-1]){ c+=nums[i-1]+1-nums[i]; nums[i]=nums[i-1]+1; } } return c; } }
Complexity Analysis for Minimum Increment to Make Array Unique Leetcode Solution:
Time Complexity:
The Time Complexity of the code is O(NlogN ) + O(N) as we need to sort the array first and then traverse through the given array only once.
Space Complexity:
The Space Complexity of the code is O(1) because we don’t need any extra space to solve this problem.