class Solution:
def maximumElementAfterDecrementingAndRearranging(self, arr):
arr.sort()
arr[0] = 1
for i in range(1, len(arr)):
arr[i] = min(arr[i], arr[i-1]+1)
return arr[-1]
class Solution {
public:
int maximumElementAfterDecrementingAndRearranging(vector<int>& arr) {
sort(arr.begin(), arr.end());
arr[0] = 1;
for (int i = 1; i < arr.size(); ++i) {
arr[i] = min(arr[i], arr[i-1] + 1);
}
return arr.back();
}
};
class Solution {
public int maximumElementAfterDecrementingAndRearranging(int[] arr) {
Arrays.sort(arr);
arr[0] = 1;
for (int i = 1; i < arr.length; i++) {
arr[i] = Math.min(arr[i], arr[i-1] + 1);
}
return arr[arr.length - 1];
}
}
var maximumElementAfterDecrementingAndRearranging = function(arr) {
arr.sort((a, b) => a - b);
arr[0] = 1;
for (let i = 1; i < arr.length; i++) {
arr[i] = Math.min(arr[i], arr[i-1] + 1);
}
return arr[arr.length - 1];
};
arr
, you can perform two types of operations:
arr
any number of times, but not below 1.arr
such that, after rearrangement, the absolute difference between any two consecutive elements is at most 1? In other words, for the rearranged array a
, for all i
from 1 to n - 1
, |a[i] - a[i-1]| <= 1
and a[0] = 1
must hold.
arr = [2, 2, 1, 2, 1]
[1, 1, 2, 2, 2]
[1, 1, 2, 2, 2]
min(1, 1+1) = 1
→ [1, 1, 2, 2, 2]
min(2, 1+1) = 2
→ [1, 1, 2, 2, 2]
min(2, 2+1) = 2
→ [1, 1, 2, 2, 2]
min(2, 2+1) = 2
→ [1, 1, 2, 2, 2]
2
.