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
}
相关推荐
好易学·数据结构31 分钟前
可视化图解算法57:字符串的排列
数据结构·算法·leetcode·面试·笔试·回溯算法·牛客
wxh_无香花自开2 小时前
chromedp 笔记
笔记·golang·网络爬虫·chromedp
এ᭄画画的北北3 小时前
力扣-283.移动零
算法·leetcode
java坤坤5 小时前
GoLand 项目从 0 到 1:第五天 —— 角色权限中间件实现与事务控制
golang·角色权限控制·go事务
mitt_6 小时前
go语言变量
开发语言·后端·golang
墨染点香11 小时前
LeetCode 刷题【31. 下一个排列】
算法·leetcode·职场和发展
wrynhyxa11 小时前
力扣热题100——子串
算法·leetcode·哈希算法
fbbqt11 小时前
Go语言 逃 逸 分 析
开发语言·golang
Q741_14712 小时前
优选算法 力扣 611. 有效三角形的个数 双指针降低时间复杂度 贪心策略 C++题解 每日一题
c++·算法·leetcode·贪心·双指针
想要AC的sjh13 小时前
【Leetcode】904. 水果成篮
算法·leetcode·职场和发展