ETH官方钱包

前往
大廳
主題

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

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

題目連結(jié):


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

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

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

經(jīng)過替換後的結(jié)果數(shù)字可以包含前導(dǎo)零。

限制:
1 ≦ num ≦ 10 ^ 8



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

範(fàn)例 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 種方式並計算出替換後的數(shù)字。然後在這 100 種內(nèi)挑出最小值和最大值來算差值即可。




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

創(chuàng)作回應(yīng)

更多創(chuàng)作