題目連結:
題目意譯:
一整數有著序列位數若且唯若該數字中每個位數之值恰好比前一個位數之值大上 1。
回傳一個包含所有位於 [low, high](含端點)中有著序列位數的整數之已排序列表。
限制:
10 ≦ low ≦ high ≦ 10 ^ 9
範例測資:
範例 1:
輸入: low = 100, high = 300
輸出: [123,234]
範例 2:
輸入: low = 1000, high = 13000
輸出: [1234,2345,3456,4567,5678,6789,12345]
解題思維:
由於序列位數的特性,使得實際上這種數字相當地稀少。因為 1 後面只能接 2、2 後面只能接 3……以此類推。所以介於 10 ~ 10 ^ 9 之間有著序列位數的數字僅僅只有 36 個。
所以就直接窮舉即可——窮舉 1 開頭、2 開頭等等的數字,然後檢查生出來的這 36 個數字有哪些位於範圍之中即可知道所求。
當然你也可以直接把這 36 個數字直接建成一個固定的陣列。下方即為這 36 個數字:
12
23
34
45
56
78
89
123
234
345
456
567
678
789
1234
2345
3456
4567
5678
6789
12345
23456
34567
45678
56789
123456
234567
345678
456789
1234567
2345678
3456789
12345678
23456789
123456789
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。