前往
大廳
主題

LeetCode - 2566. Maximum Difference by Remapping a Digit 解題心得

Not In My Back Yard | 2024-01-18 12:00:18 | 巴幣 0 | 人氣 53

題目連結:


題目意譯:
你被給定一個整數 num。你得知 Bob 將會偷偷地把 10 種可能的數字之一(0 到 9)替換成另一種數字。

回傳 Bob 藉由替換 num 中的恰好一種數字,其可以得到的最大值與最小值之差值。

注:
當 Bob 替換一個數字 d1 成另一個數字 d2 時,Bob 將會把 num 所有是 d1 的位數替換成 d2。
Bob 可以替換一個數字成自己本身,而這個情況下 num 將不變。
Bob 在分別得到最大值和最小值的情況下,可以選擇替換掉不同的數字。

經過替換後的結果數字可以包含前導零。

限制:
1 ≦ num ≦ 10 ^ 8



範例測資:
範例 1:
輸入: num = 11891
輸出: 99009
解釋:
為了得到最大值,Bob 可以將數字 1 替換成數字 9 來得到 99899。
為了得到最大值,Bob 可以將數字 1 替換成數字 0 來得到 890。
這兩個數字的差值為 99009。

範例 2:
輸入: num = 90
輸出: 99
解釋:
最大值為 99(0 替換成 9)而最小值為 0(9 替換成 0)。
因此,我們回傳 99。


解題思維:
由於 Bob 最多只有 100 種替換的方式,即:
0 換 0、
0 換 1、
……
0 換 9、
1 換 0、
1 換 1、
……
9 換 9
因此我們可以直接不管「字典序」(要比較快得出最小值和最大值就需要這個),直接窮舉出這 100 種方式並計算出替換後的數字。然後在這 100 種內挑出最小值和最大值來算差值即可。




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

創作回應

更多創作