Java/945. Minimum Increment to Make Array Unique 使陣列唯一的最小增量
阿新 • • 發佈:2019-01-02
題目
程式碼部分一(345ms 20.11%)
class Solution { public int minIncrementForUnique(int[] A) { int[] nums = new int[41000]; int count = 0; for(int i : A){ while(nums[i] != 0){ i++; count++; } nums[i]++; } return count; } }
程式碼部分二(48ms 66.80%)
class Solution { public int minIncrementForUnique(int[] A) { if(A.length == 0) return 0; int res = 0; Arrays.sort(A); for(int i = 1; i < A.length; i++){ if(A[i] >A[i-1]) continue; res += A[i - 1] - A[i] + 1; A[i] = A[i - 1] + 1; } return res; } }
程式碼部分三(9ms 100%)
class Solution { public int minIncrementForUnique(int[] A) { if(A.length == 0) return 0; int[] count = new int[40002]; int max = Integer.MIN_VALUE; int res = 0; for(int a : A){ count[a]++; max = Math.max(a, max); } for(int i = 0; i < max; i++){ if(count[i] <= 1) continue; int diff = count[i] - 1; res += diff; count[i + 1] += diff; } int diff = count[max] - 1; res += (1 + diff)*diff/2; return res; } }