字典序的第K小數字

2021-10-13 23:50:58 字數 453 閱讀 9606

給定整數 n 和 k,找到 1 到 n 中字典序第 k 小的數字。

1 ≤ k ≤ n ≤ 109。

n=10時,字典序:1,10,2,3,4,5,6.。。

可以把這n個數字看成字典樹,那麼每乙個字首都代表乙個數字,其中每個節點有10個兒子,0~9.那麼字典樹的先序遍歷的第k個就是答案。所以得到了乙個o(k)的做法。

這類問題通常通過逐位判斷答案的字首來求解。

那麼考慮當前已經求得答案的乙個字首為ans以及還需要遍歷的節點個數k,那麼對於要選擇那個子節點其實就是從0~9找到第乙個字首字數和》=k的位置。

class

solution

else

}return ans;

} ll cal

(ll now ,ll n )

return ans;}}

;

440 字典序的第K小數字

題目鏈結 解題思路 一次計算以1,2,3,4,5,6,7,8,9,10,11,12.為字首的,不超過上界n的數字個數,對數字總數進行累加,累加的和為k時,將此時字首的下乙個數字prefix 1返回,即為字典序的第k小數字。c include using namespace std prefix是字首...

LeetCode440 字典序的第K小數字

有一說一,這題用樹的方式很容易理解,想象有如下一棵樹 我們要求第k小的樹,也就是求這樣乙個節點 以從上到下從左到右遍歷這棵樹它是第k個。因為如上所示的這棵樹它從上到下從左到右遍歷也就是字典序。所以我們可以按如下的步驟進行 從最頂上的節點出發,從左往右計算以每個子節點為字首的數字個數num numnu...

leetcode 440 字典序的第K小數字

給定整數 n 和 k,找到 1 到 n 中字典序第 k 小的數字。注意 1 k n 109。示例 輸入 n 13 k 2 輸出 10 解釋 字典序的排列是 1,10,11,12,13,2,3,4,5,6,7,8,9 所以第二小的數字是 10。看了題解做出來的。感覺沒有想得很明白。按照字典序排序,以數...