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.