切換
舊版
前往
大廳
主題

LeetCode - 401. Binary Watch 解題心得

Not In My Back Yard | 2020-10-14 00:00:21 | 巴幣 0 | 人氣 290

題目連結:


題目意譯:
一個二進位制手錶有 4 個 LED 在錶面頂端,代表著小時(0 ~ 11);以及 6 個 LED 在底下,代表著分鐘(0 ~ 59)。

每個 LED 代表著 0 或是 1,而最低位在右側。
例如,上圖的二進位手錶之時間讀為「3:25」。

給定一非負整數 n ,代表目前亮著的 LED 之數量,回傳所有可能的手錶之時間。

注:
輸出中的時間之順序可以任意。
小時的部分不能包含前導 0。例如「01:00」不合法,應為「1:00」。
分鐘的部分應為兩位數,且可能包含前導 0 。例如「10:2」不合法,應為「10:02」。



範例測資:
輸入: n = 1
回傳: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]


解題思維:
窮舉所有可能的小時數(也就是 0 ~ 11),並對每個小時數再窮舉可能的分鐘數(也就是 0 ~ 59)。

將小時數與分鐘數轉成二進位後併在一起,並統計其 1 的個數(可以使用這題的方式,當然直接掃過每個位元去算也是可以的)。如果個數恰好為 n ,則將其所代表的時間放入結果之中。

窮舉完之後,即得到所求。




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

創作回應

更多創作