前往
大廳
主題

LeetCode - 668. Kth Smallest Number in Multiplication Table 解題心得

Not In My Back Yard | 2022-05-13 12:00:01 | 巴幣 0 | 人氣 141

題目連結:


題目意譯:
幾乎所有人都用過乘法表。一個大小為 m × n 的乘法表為一整數矩陣 mat 其中 mat[i][j] = i × j (索引值從 1 開始)。

給定三整數 m 、 n 和 k,回傳這個大小 m × n 乘法表中第 k 小的元素。

限制:
1 ≦ m, n ≦ 3 × 10 ^ 4
1 ≦ k ≦ m × n



範例測資:
範例 1:
輸入: m = 3, n = 3, k = 5
輸出: 3
解釋: 第 5 小的元素為 3。

範例 2:
輸入: m = 2, n = 3, k = 6
輸出: 6
解釋: 第 6 小的元素為 3。


解題思維:
觀察一乘法表,如下 m = 3 、 n = 4 之例子:
1  2  3  4
2  4  6  8
3  6  9 12
可以看到每列從左至右看是升序(也就是由小到大)的、每行從上至下看是升序的。而任何乘法表都是這樣子的。

所以可以看到本題等價於在一個滿足「每列每行各自按照升序排序」之條件的矩陣上找第 k 小的元素,則基本上與這題相同。不過該題是 m = n 的情況,稍作修改即可套用至本題。




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

創作回應

更多創作