当前位置: 首页 > news >正文

[Java恶补day22] 240. 搜索二维矩阵Ⅱ

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列
每列的元素从上到下升序排列

示例 1:
在这里插入图片描述
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:
在这里插入图片描述
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

提示:
m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
− 10 9 -10^9 109 <= matrix[i][j] <= 10 9 10^9 109
− 10 9 -10^9 109 <= target <= 10 9 10^9 109


知识点:
数组、矩阵、排除法


解:
最小的元素在矩阵左上方,最大的元素在矩阵右下方。
核心思想:从右上方开始寻找采用与二分法类似的if-else语句进行判断
在遍历ij双指针的while循环中:
若当前元素==target
=> 返回true,表示已找到
若当前元素<target
=> 表示目标不在当前这行,需让指向行的变量指针i++,遍历下面一行、列下标为j的元素
若当前元素>target
=> 表示目标在当前这行,需让指向列的变量指针j--,遍历前面一列、行下标为i的元素
当程序运行到while循环外时,表明找不到target,因此返回false

测试用例1为例:
在这里插入图片描述

时间复杂度: O ( m + n ) O(m+n) O(m+n)
空间复杂度: O ( 1 ) O(1) O(1)。未使用辅助数组,仅使用int类型的辅助变量。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {//获取行数、列数int m = matrix.length;int n = matrix[0].length;//从右上角开始找int i = 0;int j = n - 1;//只要还有元素,就继续循环while (i < m && j >= 0) {//找到元素,返回if (matrix[i][j] == target) {return true;}//若当前元素>target,则遍历前面一列else if (matrix[i][j] > target) {j--;}//否则,遍历下面一行else {i++;}}//此时表明不存在元素return false;}
}

参考
1、灵神题解

相关文章:

  • 1.SDH概述、STM-N帧结构
  • 【Dv3Admin】系统视图用户登录API文件解析
  • zset类型
  • leetcode1584. 连接所有点的最小费用-medium
  • 【数据分析】RNA-seq 数据分析:差异表达、火山图与功能富集分析
  • 常见系统设计
  • C51 KEIL使用使用问题处理
  • 传输层协议 TCP 介绍 -- TCP协议格式,确认应答机制,超时重传机制,连接管理机制,滑动窗口,流量控制,拥塞控制,延迟应答,捎带应答
  • 算法题(167):FBI树
  • 系统设计基本功:流量与存储需求估算
  • 力扣HOT100之堆:295. 数据流的中位数
  • Django项目QQ授权登录报错:redirect uri is illegal(100010) 解决方法
  • Android WebView 深色模式适配方案总结
  • P2842 纸币问题 1
  • java复习 08
  • 企业如何科学的选择WMS仓储管理系统
  • 【Python打卡Day33】简单神经网络@浙大疏锦行
  • 多模态大语言模型arxiv论文略读(116)
  • 知识图谱和图数据库Neo4j
  • ETLCloud中数据生成规则使用技巧
  • 重庆 企业网站建设/西安网是科技发展有限公司
  • 新开传奇网站刚开/竞价排名是什么意思
  • 济南营销型网站/网络推广吧
  • 经销商城建站/百度投诉中心人工电话号码
  • 做网站流程 优帮云/超级外链工具 增加外链中
  • app资源网站开发/自媒体培训学校