Given a sorted array of integers, Write an algorithm to make all array elements distinct or unique by doing minimum increments.

**Example:**

Given Input: [2, 2, 3, 5, 6, 6] Unique Array: [2, 3, 4, 5, 6, 7], Minimum Increments: 3 Explanation: Increment 2 to 3, 3 to 4 and 6 to 7. Given Input: [1, 1, 1, 1] Unique Array: [1, 2, 3, 4], Minimum Increments: 3

**Approach:**

Brute Force: Use nested loops and compare each element to the rest of the elements and increment.

Time Complexity: O(n^2)

**Better Solution – O(N)**

- Initialize
=*previous*.*input[0]* .*minIncrements = 0*- Iterate the array from 1 to last element, for each element
*input[i]*- If
*input[i] <= pervious*- Copy input[i] into
*temp* - Copy the previous to input[i].
- Increment input[i] by 1.
- Increment minIncrements by
.*temp-input[i]*

- Copy input[i] into
*previous = input[i].*

- If
- Return
.*minIncrements*

**Walk-through**

Input = [1, 1, 1, 1] previous = 1 Rest of the input = [1, 1, 1] minIncrements = 0 i=1input[i] <= pervious (1<=1)temp = input[i] = 1, Copy the previous to input[1] so input[1] = 1 Increment input[1] by 1=> input[1] = 2 minIncrements = minIncrements + (input[i]-temp) => 0+(2-1) = 1 previous = input[1] = 2 i=2input[i] <= pervious (1<=2)temp = input[i] = 1, Copy the previous to input[1] so input[2] = 2 Increment input[2] by 1=> input[2] = 3 minIncrements = minIncrements + (input[i]-temp) => 1+(3-1) = 1 + 2 = 3 previous = input[2] = 3 i=3input[i] <= pervious (1<=3)temp = input[i] = 1, Copy the previous to input[3] so input[3] = 3 Increment input[3] by 1=> input[3] = 4 minIncrements = minIncrements + (input[i]-temp) => 3+(4-1) = 3 + 3 = 6 previous = input[3] = 4 Modified Array = [1, 2, 3, 4] Minimum increments required : 6

**Complete Code:**

**Output:**

Given Input: [1, 1, 3, 3] Unique Array: [1, 2, 3, 4], Minimum Increments: 2