前往
大廳
主題

LeetCode - 0670. Maximum Swap 解題心得

Not In My Back Yard | 2024-04-09 12:00:04 | 巴幣 0 | 人氣 31

題目連結:


題目意譯:
你被給定一個整數 num。你最多可以交換其中的兩個位數一次來讓 num 最大化。

回傳你可以得到的最大 num 值。

限制:
0 ≦ num ≦ 10 ^ 8



範例測資:
範例 1:
輸入: num = 2736
輸出: 7236
解釋: 將數字 2 和數字 7 交換。

範例 2:
輸入: num = 9973
輸出: 9973
解釋: 不需要任何交換。


解題思維:
想法跟這題稍微類似。也就是說,如果我們要交換的話,其中左邊那個數字之位數越左邊(即越高位)越好,而右邊的數字則是越大越好。

因此我們可以從左至右看每一個位數可不可以交換成另一個比較大的數字,其中這些比較大的數字將位於當前的右側。如果位於右側的數字有多個是「最大」的,則我們應取最右邊的來使數值(字典序)最大化。




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

創作回應

更多創作