ETH官方钱包

前往
大廳
主題

LeetCode - 2549. Count Distinct Numbers on Board 解題心得

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

題目連結:


題目意譯:
你被給定一個正整數 n,其一開始放置於一個版面上。對於接下來的 10 ^ 9 天,每一天你都將執行以下程序:
    對於每一個存在於版面上的數字 xx,找到所有數字 i,其位於 1 ≦ i ≦ n 中且滿足 x % i == 1。
    接著,將這些數字放到版面上。

回傳經過 10 ^ 9 天候存在於版面上的相異整數之數量。

注:
一旦一個數字放置到版面上,它將會一直存在。
「%」代表著模運算。例如說,14 % 3 是 2。

限制:
1 ≦ n ≦ 100



範例測資:
範例 1:
輸入: n = 5
輸出: 4
解釋: 一開始,5 存在於版面上。
下一天,2 和 4 將會被加進去,因為 5 % 2 == 1 而 5 & 4 == 1。
再下一天,3將會被加到版面中,因為 4 % 3 == 1。
在十億天後,版面上的相異整數為 2 、 3 、 4 和 5。

範例 2:
輸入: n = 3
輸出: 2
解釋:
由於 3 % 2 == 1,2 將會被加到版面上。
在十億天後,版面上的唯二相異整數為 2 和 3。


解題思維:
可以看到無論 n 值為何(除了 n == 1 以外),第一天後 n - 1 必定會被加到版面上(因為 n % n - 1 == 1)。

同理,第二天後 n - 2 會被加到版面上。以此類推。

可以看到在 n - 1 天後,數字 2 、 3 、 …… 、 n - 1 、 n 都會在版面上。而總數為 n - 1 個。

而題目提及必定會經過 10 ^ 9 天,而 n 最大也才 100,因此 2 ~ n 必定會在版面上。

因此只要 n > 1,答案為 n - 1;若 n == 1,則答案為 1。




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

創作回應

追蹤 創作集

作者相關創作

更多創作