前往
大廳
主題

LeetCode - 788. Rotated Digits 解題心得

Not In My Back Yard | 2021-01-13 00:00:03 | 巴幣 0 | 人氣 81

題目連結:


題目意譯:
X 是一個好數字,其滿足將其每個位數各自旋轉 180 度後,我們得到一個合法的數字且與原先數字 X 不同。每個位數都必須旋轉 —— 我們不能選擇跳過任何一個。

一個數字為合法,其滿足每個位數旋轉後仍維持一個正常的位數。 0 、 1 和 8 旋轉後仍是自身; 2 和 5 旋轉後變為對方(在這個情況下它們的旋轉方向與其他數字不同,換句話說 2 或 5 做了鏡像翻轉); 6 和 9 旋轉變為對方,而其他數字無法旋轉變為其他數字。

現在給定一正整數 N ,1 ~ N 之間有多少數字 X 是好數字?

注:
N 保證落於範圍 [1, 10000] 之間。



範例測資:
輸入: 10
輸出: 4
解釋: 範圍 [1, 10] 有四個好數字:2 、 5 、 6 、 9 。注意 1 和 10 不是好數字,因為它們旋轉之後還是自己(值不變)。


解題思維:
模擬即可。

用迴圈跑過 1 ~ N 中的每個數字 X ,對於每個 X 都去旋轉看看(寫 if 判斷即可 1 對到 1 、 2 對到 5 等等)。在掃過 X 的每個位數時,如果有遇到 3 、 4 或是 7 ,則即可以確定 X 旋轉後不可能得到一個合法的數字所以可以直接跳到下一個數字。

接著將 X 旋轉後得到新數字 X' ,此時判斷一下 X' 與 X 是否相等。如果相等,則 X 不是好數字。

用一個變數充當計數器去計算好數字的數量,跑完上述的過程之後即得到所求。




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

創作回應

相關創作

更多創作