[LeetCode] 378. Kth Smallest Element in a Sorted Matrix

该博客介绍了如何利用二分查找算法解决LeetCode上的一个问题——在升序排列的矩阵中找到第k小的元素。文章详细阐述了解题思路,并提供了具体的代码实现,适合面试准备和算法学习。
摘要由CSDN通过智能技术生成

这道题感觉比较经典,值得收藏一下(感觉是面试喜欢的类型_(:з)∠)_
Kth Smallest Element in a Sorted Matrix

题目描述

给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。
请注意,它是排序后的第k小元素,而不是第k个元素。

matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,

返回 13。

思路

二分查找,二分的是小于某个值的元素的个数,二分的target仍是当前的左右边界的中间值,根据数组有序,记录小于等于target的元素个数。当这个个数正好是k的时候,左右边界相等。
在计算cnt的时候,利用数组行列有序的性质,从左上角往右上搜,如果当前元素值大于mid,就加上这一行的元素个数(0到当前的行坐标),并把纵坐标向右一个。否则,行坐标减一。

代码

class Solution {
   
public:
    int kthSmallest(vector<vector<int>>& matrix
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值