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
}
相关推荐
dying_man33 分钟前
LeetCode--24.两两交换链表中的结点
算法·leetcode
yours_Gabriel33 分钟前
【力扣】2434.使用机器人打印字典序最小的字符串
算法·leetcode·贪心算法
余厌厌厌33 分钟前
go语言学习 第9章:映射(Map)
服务器·学习·golang
roman_日积跬步-终至千里1 小时前
【Go语言基础【15】】数组:固定长度的连续存储结构
golang
GGBondlctrl2 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
cccc来财2 小时前
Go中的协程并发和并发panic处理
开发语言·后端·golang
枫景Maple13 小时前
LeetCode 2297. 跳跃游戏 VIII(中等)
算法·leetcode
roman_日积跬步-终至千里16 小时前
【Go语言基础【9】】字符串格式化与输入处理
golang