我的第一反应是,在这个矩阵中取任意一点(i,j),那么至少有 (i + 1) (j + 1)- 1* 个数比他小(即左上角的部分矩阵),然后再想想剩余的比它小的数必定是分布在这个小矩阵的下左两条边,由此不难发现当我们把这个矩阵分为大于 x,和小于等于x的两部分后,矩阵将 “裂开” 成为两个完整的部分。
二分求解,边界必定是 l = matrix[0][0], r = matrix[n - 1][n - 1] ,对于每一个 mid,我们都可以像 “裁纸” 那样从左下角开始到右上角结束,把矩阵分为两个部分,左边的这一部分的数量就是 mid 在矩阵中的排序位次。
一个问题:如何保证我们得到的解在矩阵中存在?
我们的二分终止条件只有 l == r 时才终止,而不是找到 k 时就终止,并且 l = mid + 1,这就使得我们找到的解是所有可行解中最小的那个,而最小解必定是存在于矩阵中的(反证法,如果最小解不存在于矩阵中,那么矩阵中肯定还有更小的解)
小优化:提前用一个变量存储矩阵的大小,可以令时间从 1ms -> 0ms

自己的(0ms)

class Solution {public int kthSmallest(int[][] matrix, int k) {int len = matrix.length;int l = matrix[0][0],r = matrix[len - 1][len - 1];while(l < r){int mid = (l + r) >> 1;int num = 0;int i = len - 1,j = 0;while(i >= 0 && j < len){if(matrix[i][j] <= mid){j ++;num += i + 1;}elsei --;  }if(num < k)l = mid + 1;elser = mid;}return r;}
}

力扣 378. 有序矩阵中第 K 小的元素相关推荐

  1. 力扣378.有序矩阵中第K小的元素

    378.有序矩阵中第K小的元素 思路: 利用优先级队列,改成最大堆,存入队列中,大于k抛出即可 代码实现 class Solution {public int kthSmallest(int[][] ...

  2. 【LeetCode】378. 有序矩阵中第 K 小的元素(js 实现)

    1.题目:378. 有序矩阵中第 K 小的元素 - 力扣(LeetCode) (leetcode-cn.com) 2.实现 (1)方法一: 直接将矩阵转换为一维数组,再将一维数组进行排序,最后取第k个 ...

  3. [leetcode]378. 有序矩阵中第 K 小的元素

    378. 有序矩阵中第 K 小的元素 题目链接 思路分析 代码实现 题目链接 378. 有序矩阵中第 K 小的元素 思路分析 题目中又一次提到了有序,就能够猜想能够使用二分法 那么如果要使用二分的话, ...

  4. Leetcode刷题100天—378. 有序矩阵中第 K 小的元素(优先队列)—day16

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素. 请注意,它是 排序后 的第 k 小元素,而不是 ...

  5. 378. 有序矩阵中第K小的元素

    2020-05-25 1.题目描述 有序矩阵中第K小的元素 2.题解 1.优先队列 2.使用二分查找 class Solution { public:int kthSmallest(vector< ...

  6. LeetCode 378. 有序矩阵中第K小的元素(二分查找)

    文章目录 1. 题目 2. 解题 2.1 暴力法 2.2 二分查找 1. 题目 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而 ...

  7. 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素

    一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...

  8. Leetcode 378. 有序矩阵中第K小的元素 解题思路及C++实现

    解题思路: 使用一个最大堆遍历matrix中的数.保持最大堆中的元素数量不超过k,最后得到的堆顶元素值就是第k小的数. class Solution { public:int kthSmallest( ...

  9. leetcode 378. Kth Smallest Element in a Sorted Matrix | 378. 有序矩阵中第 K 小的元素(小根堆)

    题目 https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/ 题解 套了下小根堆模板. class Solutio ...

最新文章

  1. 从专利数量看全球最具创新力的50家公司
  2. asp.net oracle优化,[转]ASP.NET性能优化
  3. scaling之旅_机器学习算法之旅
  4. pythonweb开发-PythonWeb开发教程(一),开发之前需要准备什么
  5. 【转】android如何查看cpu的占用率和内存泄漏
  6. (19)C++项目练习二----------【音乐播放器】
  7. 蓝桥杯-Anagrams问题(java)
  8. 开启php,php开启openssl的方法
  9. 天源迪科和科大讯飞的关系_科大讯飞 语音突围
  10. GetModuleHandle
  11. DW8里面的HTML面板在哪里,打开Dreamweaver8窗口后,如果没有出现属性面板,可执行()菜单中的 - 问答库...
  12. WinXP利用无线网卡做AP共享上网
  13. .NET(WinCE、WM)开发转Android开发 ——Xamarin和Smobiler对比...
  14. php静态网页和动态网页,静态网页和动态网页的区别是什么
  15. cygwin+hadoop+eclipse (三) 运行wordcount实例
  16. 信息发展树标杆 智慧城市筑屏障
  17. iOS开发基础-Plist实现嵌套模型
  18. 图的深度优先遍历和广度优先遍历算法流程图
  19. 论文阅读--Emotion Recognition in Conversation: Research Challenges, Datasets, and Recent Advances
  20. 动手学深度学习 PyTorch版-Day3

热门文章

  1. 计算机语言类型和特点,计算机语言-计算机语言的特点
  2. SPSS—回归—多元线性回归(转)
  3. 5个常用的CMD命令
  4. 百度地图之鼠标绘制工具条库(开源库)
  5. Linux 笔试面试常见题目(整理)
  6. Windows XP 中如何安装 pem 证书
  7. 基于 nonce 的用户身份验证协议
  8. thinkbook14重装系统
  9. [Python]networkx入门
  10. 聚焦Magik –最新的JVM语言