前往
大廳
主題

LeetCode - 1323. Maximum 69 Number 解題心得

Not In My Back Yard | 2023-10-02 12:00:01 | 巴幣 0 | 人氣 99

題目連結:


題目意譯:
你被給定一個正整數 num,其只由數字 6 和 9 所組成。

回傳你藉由改變最多一個位數(6 變成 9,或是 9 變成 6)後最大可獲得的數字。

限制:
1 ≦ num ≦ 10 ^ 4
num 只由數字 6 和 9 所組成。



範例測資:
範例 1:
輸入: num = 9669
輸出: 9969
解釋:
改變第一個位數會得到 6669。
改變第二個位數會得到 9969。
改變第三個位數會得到 9699。
改變第四個位數會得到 9666。
最大的數字為 9969。

範例 2:
輸入: num = 9996
輸出: 9999
解釋: 將最後一個數字 6 變成 9 可以得到最大的數字。

範例 3:
輸入: num = 9999
輸出: 9999
解釋: 最佳策略是不改變任何數字。


解題思維:
策略很簡單——從左至右(也就是由高位到低位)掃過 num,並將第一個遇到的 6 變成 9 即可(如果 num 中沒有 6,則不變動任何數字)。可以看到,如果都是 9,則將維持原樣(因為原本就是最大);而如果 num 有 6 存在,因為越靠左是越高位,因此數值本身越大。因此改最左邊的 6,可以得到最佳的效果。

最後回傳掃過後(可能有被更動)的數字即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作