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

news2024/11/18 8:28:11

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

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • __378有序矩阵中第K小的元素__直接排序
    • __378有序矩阵中第K小的元素__归并排序
    • __378有序矩阵中第K小的元素__二分查找

原题链接:

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

https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/description/

完成情况:

在这里插入图片描述

解题思路:

参考代码:

__378有序矩阵中第K小的元素__直接排序

package 西湖算法题解___中等题;

import java.util.Arrays;

public class __378有序矩阵中第K小的元素__直接排序 {
	public int kthSmallest(int[][] matrix, int k) {
		/*
		给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。
		请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。


		 */
		int rows = matrix.length;   //行row
		int cols = matrix[0].length;    //列col
		int sorted [] = new int[rows * cols];   //组合成一排数组,进行排序
		int index = 0;
		for (int row [] : matrix){      //每次获取matrix里的int row [] 数据
			for (int num : row){    //同时再在每一行row[]获取到每一个数
				sorted[index++] = num;
			}
		}
		Arrays.sort(sorted);
		return sorted[k-1];
	}
}

__378有序矩阵中第K小的元素__归并排序

package 西湖算法题解___中等题;

import java.util.Comparator;
import java.util.PriorityQueue;

public class __378有序矩阵中第K小的元素__归并排序 {
	public int kthSmallest(int[][] matrix, int k) {
		PriorityQueue<int []> priorityQueue = new PriorityQueue<int []>(new Comparator<int[]>() {
			@Override
			public int compare(int[] a, int[] b) {
				return a[0] - b[0];
			}
		});
		//--------------------------------------------------------------------------
		int n = matrix.length;
		for (int i = 0;i<n;i++){
			priorityQueue.offer(new int[]{matrix[i][0],i,0});
		}
		//--------------------------------------------------------------------------
		for (int i = 0;i<k-1;i++){
			int  now [] = priorityQueue.poll();
			if (now[2] != n -1){
				priorityQueue.offer(new int[]{matrix[now[1]][now[2] + 1],now[1],now[2]+1});
			}
		}
		return priorityQueue.poll()[0];
	}
}

__378有序矩阵中第K小的元素__二分查找

package 西湖算法题解___中等题;

public class __378有序矩阵中第K小的元素__二分查找 {
	public int kthSmallest(int[][] matrix, int k) {
		int n = matrix.length;
		int left = matrix[0][0];
		int right = matrix[n-1][n-1];
		while (left < right){
			int mid = left + ((right - left) >> 1 ) ;
			if (myCheck(matrix,mid,k,n)){
				right = mid;
			}else {
				left = mid + 1;
			}
		}
		return left;
	}

	private boolean myCheck(int[][] matrix, int mid, int k, int n) {
		int i = n-1;
		int j = 0;
		int num = 0;
		while (i >= 0 && j<n){
			if (matrix[i][j] <= mid){
				num += (i+1);
				j++;
			}else {
				i--;
			}
		}
		return num >= k;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中学高级本习集c++

第一章 回溯法 1.1 马拦过河卒 源程序名 knight.???&#xff08;pas, c, cpp&#xff09; 可执行文件名 knight.exe 输入文件名 knight.in 输出文件名 knight.out 【问题描述】 棋盘上A点有一个过河卒&#xff0c;需要走到目标B点…

山西电力市场日前价格预测【2023-08-10】

日前价格预测 预测明日&#xff08;2023-08-10&#xff09;山西电力市场全天平均日前电价为328.01元/MWh。其中&#xff0c;最高日前电价为366.62元/MWh&#xff0c;预计出现在20: 00。最低日前电价为283.28元/MWh&#xff0c;预计出现在13: 15。 价差方向预测 1&#xff1a; 实…

本质安全设备标准(IEC60079-11)的理解(六)温度

本质安全设备标准&#xff08;IEC60079-11&#xff09;的理解&#xff08;六&#xff09;温度 本质安全设备的温度要求也是非常复杂的&#xff0c;首先在标准中涉及有3个温度的概念&#xff1a; 环境温度ambient temperature&#xff0c; 工作温度service temperature和最高表…

聊聊机器人学习中的“资产”与“负债”(节选)

前言&#xff1a; 程序里面的bug&#xff0c;人生过程的bug&#xff0c;都非常让人烦躁的。 前一篇&#xff1a; 聊聊机器人学习中的“投资”与“消费”&#xff08;节选&#xff09; 有很多学生和朋友&#xff0c;越学越累&#xff0c;越活越累&#xff1f;这到底是为何&a…

Java | 包和内部类

目录 一、Java类包 1.1 类名冲突 1.2 完整的类路径 1.3 创建包 1.4 导入包 1.4.1 使用import关键字导入包 1.4.2 使用import导入静态成员 二、内部类 2.1 成员内部类 2.1.1 成员内部类简介 2.1.2 使用this关键字获取内部类与外部类的引用 2.2 匿名内部类 类除了具有…

无涯教程-Perl - getnetbyname函数

描述 此函数返回由NAME指定的网络信息(在列表context中)($name,$aliases,$addrtype,$net) 语法 以下是此函数的简单语法- getnetbyname NAME返回值 此函数在错误时返回undef,否则在标量context中返回网络地址,在错误时返回空列表,否则在列表context中返回网络记录(名称,别…

在软件测试中,如何有效地跟踪和管理缺陷?

在软件测试中&#xff0c;跟踪和管理缺陷是非常重要的&#xff0c;因为这有助于确保所有问题得到妥善处理&#xff0c;避免在产品发布后出现问题。以下是跟踪和管理缺陷的一些有效方法&#xff1a; 1.创建缺陷报告&#xff1a;当发现一个缺陷时&#xff0c;应该立即创建一个缺…

前端进阶js02----null和undefined的区别

1.相同点 1)都是原始类型的值且保存在栈中。 2) 在布尔运算中都会被认为是false 2.不同点 1&#xff09;null是js的关键字&#xff0c;表示空值&#xff1b;undefined不是关键字&#xff0c;是一个全局变量。 2&#xff09;值相同&#xff0c;但类型不一样 值相同&#xff1a…

Day 25 C++ queue 容器(队列)

文章目录 queue 基本概念定义注意基本概念队头&#xff08;Front&#xff09;——指向队列中最早添加的元素的位置。队尾&#xff08;Rear&#xff09;——指向队列中最后添加的元素的位置。入队&#xff08;Enqueue&#xff09;——将元素添加到队尾。出队&#xff08;Dequeue…

Docker 方式 部署 vue 项目 (docker + vue + nginx)

1.安装好 nginx 。 2. 把 vue 项目的源码克隆到确定目录下。用 git 管理&#xff0c;所以直接 git clone 到既定目录就行了。 如我的目录是&#xff1a;/root/jiangyu/projects/gentle_vue/gentle_vue_code 。 3. 项目打包&#xff1a; npm run build 复制 会自动生成 dist…

【Linux】-进程概念之进程优先级(如何去进行调度以及进程切换),还不进来看看??

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

小小推磨台(我在芜湖等你)

君问归期已有期&#xff0c;江城相逢话恩奇 我 渐渐明了 因为 有祂同行 有期待 有不知所措 离别故乡 去远方 是求学 更是认识祂 我 还不知 那里有没有家 或许有 或许有人找寻 忽然间 想到不认识的相逢 已然在祂预备之中 在那里 侧耳倾听 彼此谈论 那是和睦同居 好的无比 if (&q…

优雅地处理RabbitMQ中的消息丢失

目录 一、异常处理 二、消息重试机制 三、错误日志记录 四、死信队列 五、监控与告警 优雅地处理RabbitMQ中的消息丢失对于构建可靠的消息系统至关重要。下面将介绍一些优雅处理消息丢失的方案&#xff0c;包括异常处理、重试机制、错误日志记录、死信队列和监控告警等。…

科技资讯|苹果手机版Vision Pro头显专利曝光,内嵌苹果手机使用

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近日获得了一项头显相关的技术专利&#xff0c;展示了一款亲民款 Vision Pro 头显&#xff0c;可以将 iPhone 放置在头显内部充当屏幕。 根据patentlyapple 媒体报道&#xff0c;这是苹果公司…

设计模式——单例模式(懒汉和饿汉)

单例模式 一、概念 单例模式是一种对象创建型模式&#xff0c;使用单例模式&#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说&#xff0c;在整个程序空间中&#xff0c;该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的&#xff0c;比如打印机程…

若依管理系统后端将 Mybatis 升级为 Mybatis-Plus

文章目录 说明流程增加依赖修改配置文件注释掉MybatisConfig里面的Bean 代码生成使用IDEA生成代码注意 Controller文件 说明 若依管理系统是一个非常完善的管理系统模板&#xff0c;里面含有代码生成的方法&#xff0c;可以帮助用户快速进行开发&#xff0c;但是项目使用的是m…

单例模式_饿汉模式_懒汉模式(含线程安全写法)

前言 某个类在程序中只存在唯一一份实例&#xff0c;叫做单例模式。 目录 前言 一、饿汉模式 二、懒汉模式 &#xff08;一&#xff09;单线程写法 &#xff08;二&#xff09;线程安全写法 &#xff08;三&#xff09;线程安全和不安全写法的区别 结语 一、饿汉模式 …

分享windwosServer2012R--ISO镜像下载地址(含激活教程)

windowsServer2012R----急速网盘下载地址&#xff1a;点击下载 提取码&#xff1a;888999 激活下载&#xff1a;点击下载 提取码&#xff1a;888999

AI和GPT的崛起,对未来项目管理的影响与变革︱原微软项目经理陆敏

原微软项目经理和产品经理人才顾问陆敏先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;AI和GPT的崛起&#xff0c;对未来项目管理的影响与变革。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1…

从LeakCanary看Service生命周期监控

作者&#xff1a;小海编码日记 大家都知道使用LeakCanary可以监控项目中存在的 内存泄漏 问题&#xff0c;那么LeakCanary是怎么实现的呢&#xff1f;LeakCanary通过检测程序中对象的引用关系&#xff0c;收集应该被回收的对象并标记&#xff0c;随后等待GC后&#xff0c;检查该…