Golang | Leetcode Golang题解之第378题有序矩阵中第K小的元素

题目:

题解:

Go 复制代码
func kthSmallest(matrix [][]int, k int) int {
    n := len(matrix)
    left, right := matrix[0][0], matrix[n-1][n-1]
    for left < right {
        mid := left + (right - left) / 2
        if check(matrix, mid, k, n) {
            right = mid
        } else {
            left = mid + 1
        }
    }
    return left
}

func check(matrix [][]int, mid, k, n int) bool {
    i, j := n - 1, 0
    num := 0
    for i >= 0 && j < n {
        if matrix[i][j] <= mid {
            num += i + 1
            j++
        } else {
            i--
        }
    }
    return num >= k
}
相关推荐
json{shen:"jing"}1 小时前
字符串中的第一个唯一字符
算法·leetcode·职场和发展
追随者永远是胜利者2 小时前
(LeetCode-Hot100)15. 三数之和
java·算法·leetcode·职场和发展·go
程序员酥皮蛋2 小时前
hot 100 第二十七题 27.合并两个有序链表
数据结构·leetcode·链表
im_AMBER4 小时前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
v_for_van8 小时前
力扣刷题记录6(无算法背景,纯C语言)
c语言·算法·leetcode
样例过了就是过了8 小时前
LeetCode热题100 最大子数组和
数据结构·算法·leetcode
踩坑记录9 小时前
leetcode hot100 200. 岛屿数量 medium dfs
leetcode·深度优先
追随者永远是胜利者10 小时前
(LeetCode-Hot100)4. 寻找两个正序数组的中位数
java·算法·leetcode·职场和发展·go
追随者永远是胜利者10 小时前
(LeetCode-Hot100)2. 两数相加
java·算法·leetcode·go
程序员酥皮蛋11 小时前
hot 100 第二十九题 29.删除链表的倒数第 N 个结点
数据结构·算法·leetcode·链表