精華區beta Marginalman 關於我們 聯絡資訊
1846. Maximum Element After Decreasing and Rearranging 給你一個正整數陣列arr,你可以執行下面兩個操作無數次: 1.減少:將某個元素的值變成一個更小的正整數 2.重新排序:將元素重新排序 操作完畢的陣列要符合下列條件: 1.首項為1 (arr[0] == 1) 2.任兩項之間最大差為1 (abs(arr[i] - arr[i-1]) <= 1) 回傳此時陣列中元素的最大值。 範例: Input: arr = [2,2,1,2,1] Output: 2 我們可以透過操作將陣列變成這樣:[1,2,2,2,1] Input: arr = [100,1,1000] Output: 3 先交換: [1, 100, 1000] 減少2: [1, 2, 1000] 減少3: [1, 2, 3] Input: arr = [1,2,3,4,5] Output: 5 原本就符合條件 Intuition: 排序之後計算答案。 Approach: 從題目讓我們可以做的兩個操作看下來 我們可以知道一個長度為n的陣列 它的最大值一定是嚴格單調遞增 陣列會長這樣[1, 2, 3 ... , n] 那不是最大值的情況是怎樣? 就是單調遞增 在遞增之後有重複的情況 例如[1, 2, 3, 4, 4]或是[1, 2, 4, 4, 4] 後面的陣列可以透過操作變成前面的陣列 所以我們只要不斷看數字有沒有遞增就好 如果遇到沒有遞增的情況就停頓 TS Code: function maximumElementAfterDecrementingAndRearranging (arr: number[]): number { arr.sort((a, b) => (a - b)) let answer = 0 for (let i = 0; i < arr.length; i++) { if (arr[i] > answer) answer++ } return answer } -- Zoosewu Yoututbe顯示PTT推文 可以在各個網站追實況或Live時使用 預覽圖: https://i.imgur.com/ZhtXdAJ.png https://i.imgur.com/WqbLNV3.png 完整介紹: https://github.com/zoosewu/PTTChatOnYoutube/tree/master/homepage 支援的網站: Youtube Twitch Holotools Niji-mado Holodex -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.229.33 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1700040217.A.59E.html
wwndbk: 大師 11/15 17:24
※ 編輯: ZooseWu (114.32.229.33 臺灣), 11/15/2023 17:24:24