Swift ~ 乘法表中第K小的数

func findKthNumber(_ m: Int, _ n: Int, _ k: Int) -> Int {
    var left = 1
    var right = m * n
    while left < right {
        let mid = (left + right) / 2
        var count = 0
        
        var i = 1 // 计算每一行比mid小的元素个数之和 与 k 的大小关系
        
        while i <= m {
            let tmp = i * n < mid ? n : mid / i
            count += tmp
            i += 1
        }
        
        if count < k {
            left = mid + 1
        } else {
            right = mid
        }
    }
    return left
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容