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

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;   //行rowint cols = matrix[0].length;    //列colint 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[]>() {@Overridepublic 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.rhkb.cn/news/87917.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitee(码云)如何生成并添加公钥配置用户信息

一&#xff0c;简介 在使用Gitee的时候&#xff0c;公钥是必须的&#xff0c;无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器&#xff0c;然后配置自己的用户信息&#xff0c;方便日后拉取与上传代码。 二&#xff0c;步骤介绍 2.1 本地生成公钥 打开git ba…

Prometheus技术文档-概念

Prometheus是一个开源的项目连接如下&#xff1a; Prometheus首页、文档和下载 - 服务监控系统 - OSCHINA - 中文开源技术交流社区 基本概念&#xff1a; Prometheus是一个开源的系统监控和告警系统&#xff0c;由Google的BorgMon监控系统发展而来。它主要用于监控和度量各种…

Modbus TCP转Profibus DP网关modbus tcp报文解析

捷米JM-DPM-TCP网关。在Profibus总线侧作为主站&#xff0c;在以太网侧作为ModbusTcp服务器功能&#xff0c; 下面是介绍捷米JM-DPM-TCP主站网关组态工具的配置方法 2, Profibus主站组态工具安装 执行资料光盘中的安装文件setup64.exe或setup.exe安装组态工具。安装过程中一直…

PyQt5利用QTextEdit控件输入多行文本

1、总代码 #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QApplication,QWidget from PyQt5 import QtCore, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(320, 240)s…

C语言属刷题训练【第八天】

文章目录 &#x1fa97;1、如下程序的运行结果是&#xff08; &#xff09;&#x1f4bb;2、若有定义&#xff1a; int a[2][3]; &#xff0c;以下选项中对 a 数组元素正确引用的是&#xff08; &#xff09;&#x1f9ff;3、在下面的字符数组定义中&#xff0c;哪一个有语法错…

ADB连接安卓手机提示unauthorized

近期使用airtest进行自动化测试时&#xff0c;因为需要连接手机和电脑端&#xff0c;所以在使用adb去连接本人的安卓手机vivo z5时&#xff0c;发现一直提示unauthorized。后来经过一系列方法尝试&#xff0c;最终得以解决。 问题描述&#xff1a; 用数据线将手机接入电脑端&…

C语言经典小游戏之扫雷(超详解释+源码)

“少年气&#xff0c;是历尽千帆举重若轻的沉淀&#xff0c;也是乐观淡然笑对生活的豁达&#xff01;” 今天我们学习一下扫雷游戏怎么用C语言来实现&#xff01; 扫雷小游戏 1.游戏介绍2.游戏准备3.游戏实现3.1生成菜单3.2游戏的具体实现3.2.1初始化棋盘3.2打印棋盘3.3布置雷…

系列七、RocketMQ如何保证顺序消费消息

一、概述 所谓顺序消费指的是可以按照消息的发送顺序来进行消费。例如一笔订单产生了3条消息&#xff0c;即下订单》减库存》增加订单&#xff0c;消费时要按照顺序消费才有意义&#xff0c;要不然就乱套了&#xff08;PS&#xff1a;你总不能订单还没下&#xff0c;就开始减库…

vscode vue3+vite 配置eslint

vue2webpackeslint配置 目前主流项目都在使用vue3vite&#xff0c;因此针对eslint的配置做了一下总结。 引入ESlint、pritter 安装插件&#xff0c;执行以下命令 // eslint // prettier // eslint-plugin-vue // eslint-config-prettier // eslint-plugin-prettier yarn ad…

苹果电脑 Java切换版本

效果 1、安装 Java1.8和Java11 直接官网下载并安装 2、安装后的文件 /资源库/Java/JavaVirtualMachines/ 3、修改配置文件 vi ~/.bash_profile#java export JAVA_8_HOME"/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home" alias jdk8expor…

RFID工业识别技术:供应链智能化的科技颠覆

RFID工业识别技术&#xff0c;作为物联网的先锋&#xff0c;正在供应链管理领域展现着前所未有的科技颠覆。从物料追踪到库存管理&#xff0c;再到物流配送&#xff0c;RFID技术以其高效的数据采集和智能的自动化处理&#xff0c;彻底改变着传统供应链的运营方式。 RFID在物料追…

代驾小程序怎么做

代驾小程序是一款专门为用户提供代驾服务的手机应用程序。它具有以下功能&#xff1a; 1. 预约代驾&#xff1a;代驾小程序允许用户在需要代驾服务时提前进行预约。用户可以选择出发地点、目的地以及预计用车时间&#xff0c;系统会自动匹配最合适的代驾司机&#xff0c;并确保…

手把手教你,Selenium 遇见伪元素该如何处理?

问题发生 在很多前端页面中&#xff0c;大家会见到很多&#xff1a;:before、::after 元素&#xff0c;比如【百度流量研究院】&#xff1a; 比如【百度疫情大数据平台】&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B…

vim学习笔记(致敬vim作者)

vim cheat sheet 30. vim 删除大法 vim 删除某个字符之后改行的其他的字符&#xff1f;删除某行之后的其他行&#xff1f;删除某个字符之后的其他字符&#xff1f;【1】删除单个字符&#xff1f; 跳到要删除的字符位置 按下d键然后按下shift 4键 【2】删除某行之后的其他行…

元宇宙时代超高清视音频技术白皮书关于流媒体协议和媒体传输解读

流媒体协议 元宇宙业务场景对流媒体传输的实时性和互动性提出了更高的要求&#xff0c;这就需要在传统的 RTMP、SRT、 HLS 等基础上增加实时互动的支持。实时互动&#xff0c;指在远程条件下沟通、协作&#xff0c;可随时随地接入、实时地传递虚实融合的多维信息&#xff0c;身…

python递归实现逆序输出数字

一、问题描述 编程实现将输入的整数逆序输出 二、问题分析 逆序输出数字实际是一个数值问题的递归 三、算法设计 该问题要求输入任意一个整数&#xff0c;实现它的逆序输出。首先判断输入的整数是正整数还是负整数&#xff0c;如果是负整数&#xff0c; 则在逆序输出前应先…

使用埋点方式对应用监控

在指标监控的世界里&#xff0c;应用和业务层面的监控有两种典型手段&#xff0c;一种是在应用程序里埋点&#xff0c;另一种是分析日志&#xff0c;从日志中提取指标。埋点的方式性能更好&#xff0c;也更灵活&#xff0c;只是对应用程序有一定侵入性&#xff0c;而分析日志的…

【网络通信】socket编程——TCP套接字

TCP依旧使用代码来熟悉对应的套接字&#xff0c;很多接口都是在udp中使用过的 所以就不会单独把他们拿出来作为标题了&#xff0c;只会把第一次出现的接口作为标题 文章目录 服务端 tcp_servertcpserver.hpp(封装)初始化 initServer1. 创建socket2. 绑定 bindhtons —— 主机序…

C语言创建目录(文件夹)之mkdir

一、mkdir 说明&#xff1a;创建目录。 头文件库&#xff1a; #include <sys/stat.h> #include <sys/types.h>函数原型&#xff1a; int mkdir(const char *pathname, mode_t mode);mode方式&#xff1a;可多个权限相或&#xff0c;如0755表示S_IRWXU | S_IRGRP…

程序使用Microsoft.XMLHTTP对象请求https时出错解决

程序中使用Microsoft.XMLHTTP组件请求https时出现如下错误&#xff1a; 出错程序代码示例&#xff1a; strUrl "https://www.xxx.com/xxx.asp?id11" dim objXmlHttp set objXmlHttp Server.CreateObject("Microsoft.XMLHTTP") objXmlHttp.open "…