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

搜索二维矩阵 II(java)

题目描述

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

代码思路:

用暴力算法:

class Solution {public boolean searchMatrix(int[][] matrix, int target) {// boolean flag = false;if(matrix==null ||matrix.length==0 ||target<matrix[0][0]){return false;}int n=matrix.length;int m=matrix[0].length;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(matrix[i][j]==target){return true;}else if(matrix[i][j]>target){break;}}}return false;}
}

巧妙的方法:

这个把他看做一个二叉搜索树,其中右上角点是根节点,往下是右子树,往左是左子树。复杂度O(log(M*N))

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix==null ||matrix.length==0 ||target<matrix[0][0]){return false;}int n=matrix.length;int m=matrix[0].length;int i = 0;int j = m-1;while(true){if(matrix[i][j]==target){return true;}else if(matrix[i][j]>target){j--;if(j<0){return false; }}else{i++;if(i>n-1){return false;}}}}
}

http://www.lryc.cn/news/495316.html

相关文章:

  • Python语法基础(四)
  • 03_Django视图
  • 如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件
  • 11 设计模式之代理模式(送资料案例)
  • MongoDB聚合操作
  • 第二十三周周报:High-fidelity Person-centric Subject-to-Image Synthesis
  • Cesium 与 Leaflet:地理信息可视化技术比较
  • Linux 服务器使用指南:诞生与演进以及版本(一)
  • 龙蜥 Linux 安装 JDK
  • Python小白语法基础20(模块与包)
  • 详解 Qt QtPDF之QPdfPageNavigator 页面跳转
  • 通俗易懂:序列标注与命名实体识别(NER)概述及标注方法解析
  • 【C语言】二叉树(BinaryTree)的创建、3种递归遍历、3种非递归遍历、结点度的实现
  • 2024年11月文章一览
  • 重生之我在异世界学编程之C语言:二维数组篇
  • 和鲸科技创始人CEO范向伟出席首届工业智算产业发展研讨会,共话 AI 创新与产业化落地
  • postgres数据备份与主从配置
  • 【二分查找】力扣 275. H 指数 II
  • 使用uni-app进行开发前准备
  • AI开发-深度学习框架-PyTorch-torchnlp
  • VBA数据库解决方案第十七讲:Recordset对象记录位置的定位方法
  • Ubuntu 操作系统
  • Maven 内置绑定到底怎么回事?
  • 如何把Qt exe文件发送给其他人使用
  • 【汇编语言】call 和 ret 指令(三) —— 深度解析汇编语言中的批量数据传递与寄存器冲突
  • 定义函数合并字符串—超详细讲解
  • 实现 vue3 正整数输入框组件
  • Leetcode - 周赛425
  • c++(斗罗大陆2)
  • redis常见数据类型