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

embedded/2024/11/14 21:00:28/

1.题目基本信息

1.1.题目描述

给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。

请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。

你必须找到一个内存复杂度优于 O(n^2) 的解决方案。

1.2.题目地址

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

2.解题方法

2.1.解题思路

归并排序+小根堆

2.2.解题步骤

第一步,初始化小根堆,其中堆中每个元素为(矩阵元素值,行索引,列索引)。初始化将矩阵所有行的第一个元素的item压入堆中。

第二步,循环k次,每次循环弹出堆中的最小item,并将该item的右边的一个元素添加到小跟堆中(确保该item没有超过矩阵范围)。第k次循环弹出的元素值即为题解。

3.解题代码

Python代码

import heapqclass Solution:# 归并排序+小根堆def kthSmallest(self, matrix: List[List[int]], k: int) -> int:length=len(matrix)# 第一步,初始化小根堆,其中堆中每个元素为(矩阵元素值,行索引,列索引)。初始化将矩阵所有行的第一个元素的item压入堆中。heap=[]for i in range(length):heapq.heappush(heap,(matrix[i][0],i,0))# 第二步,循环k次,每次循环弹出堆中的最小item,并将该item的右边的一个元素添加到小跟堆中(确保该item没有超过矩阵范围)。第k次循环弹出的元素值即为题解。result=0for j in range(k):item=heapq.heappop(heap)result=item[0]nextCol=item[2]+1if nextCol<length:heapq.heappush(heap,(matrix[item[1]][nextCol],item[1],nextCol))# print(result)return result

4.执行结果

在这里插入图片描述


http://www.ppmy.cn/embedded/115689.html

相关文章

【简单点】docker如何部署tomcat

使用Docker部署Tomcat的详细步骤可以归纳如下&#xff1a; 一、准备阶段 检查Docker环境&#xff1a; 确保Docker已正确安装在您的系统上。可以通过在终端或命令提示符中运行docker --version或docker -v来检查Docker的版本&#xff0c;从而确认Docker是否已安装。如果未安装D…

Vue主题色实现

主题色实现 情境 配置平台支持多个主题色的选择&#xff0c;用户可通过在配置平台选择项目主题色。前端项目在骨架屏加载页面获取配置信息&#xff0c;设置项目主题色&#xff0c;实现同个项目不同主题色渲染的需求 实现 1.定义主题色变量 不同主题色根据不同js文件划分定…

【深度学习】【TensorRT】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【TensorRT】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【TensorRT】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转engineWindows平台搭…

评估数据库元数据:注释、索引与约束的重要性及其对性能与维护的影响

在导入预设表结构时&#xff0c;评估自定义元数据&#xff08;例如注释、索引和约束&#xff09;对数据库性能和维护的影响是非常重要的。下面将分别讨论这些元素的作用以及它们如何影响数据库系统&#xff0c;并给出一些具体的例子。 注释&#xff08;Comments&#xff09; …

Unity3d开发的C#编码规范

Unity3d开发的C#编码规范 我的大部分的项目都是按照这一准则做的&#xff0c;不一定完全符合大家的习惯&#xff0c;仅供参考。 目录 一、目的 二、C#类和接口命名 1&#xff09;C#类 2&#xff09;接口命名 三、方法声明 四、属性声明 五、C#变量声明 1&#…

Linux实用命令 lsof命令

1.命令简介 lsof(list open files)用于查看进程打开的文件,是十分方便的系统监测工具。因为 lsof 命令需要访问核心内存和各种系统文件,所以需要root权限才可执行。 在 Linux 中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,所以lsof不仅可…

php基础语法

PHP 是一种流行的服务器端脚本语言&#xff0c;广泛应用于 Web 开发。以下是 PHP 的基础语法和常用功能介绍&#xff0c;适合初学者入门学习。 1. PHP 基本语法 1.1 PHP 标签 PHP 代码可以嵌入到 HTML 中&#xff0c;使用 <?php ?> 标签来包裹 PHP 代码&#xff1a;…

keil安装HAL库

通义千问给我的控制电机定时器的代码里包含一个头文件stm32f1xx_hal.h 经过搜索&#xff0c;得知这个头文件需要安装HAL库 可以从意法半导体官方网站下载最新版的STM32CubeMX&#xff1a;https://www.st.com/en/development-tools/stm32cubemx.htmlhttps://www.st.com/en/dev…