減小和重新排列數(shù)組后的最大元素

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-element-after-decreasing-and-rearranging

題目描述:

給你一個(gè)正整數(shù)數(shù)組 arr 。請(qǐng)你對(duì) arr 執(zhí)行一些操作(也可以不進(jìn)行任何操作),使得數(shù)組滿足以下條件:
arr 中 第一個(gè) 元素必須為 1 。
任意相鄰兩個(gè)元素的差的絕對(duì)值 小于等于 1 ,也就是說(shuō),對(duì)于任意的 1 <= i < arr.length (數(shù)組下標(biāo)從 0 開(kāi)始),都滿足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 為 x 的絕對(duì)值。
你可以執(zhí)行以下 2 種操作任意次:
減小 arr 中任意元素的值,使其變?yōu)橐粋€(gè) 更小的正整數(shù) 。
重新排列 arr 中的元素,你可以以任意順序重新排列。
請(qǐng)你返回執(zhí)行以上操作后,在滿足前文所述的條件下,arr 中可能的最大值 。

思路:

要滿足兩個(gè)條件,先對(duì)數(shù)組進(jìn)行排序,然后將第一個(gè)元素賦值為1,第一個(gè)條件就滿足了。然后是第二個(gè)條件,
直接從索引1開(kāi)始遍歷排序后的數(shù)組,如果當(dāng)前元素和上一個(gè)元素不相等,且差值不等于1,則把當(dāng)前元素賦值為前一個(gè)元素+1


1846. 減小和重新排列數(shù)組后的最大元素.png
代碼實(shí)現(xiàn):
class Solution {
    public int maximumElementAfterDecrementingAndRearranging(int[] arr) {
        Arrays.sort(arr);
        arr[0] = 1;
        int len = arr.length;
        for (int i = 1; i < len; i++) {
            if (arr[i] == arr[i - 1] || arr[i] == arr[i - 1] + 1) {
                continue;
            } else {
                arr[i] = arr[i - 1] + 1;
            }
        }
        return arr[len - 1];
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容