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

【LeetCode】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 <= matrix[i][j] <= 10^9
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -10^9 <= target <= 10^9

解答

源代码

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

总结

想用递归,但重点在于递归的起点在哪里。一开始我把递归的起点定在了左上角,这样做出来的算法其实比暴力破解还糟糕;把起点定在右上角才是正确的选择,此时当前元素的左边都比它小,下边都比它大。

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

相关文章:

  • SED正则表达式中[方括号]的特殊处理
  • Android 音频开发
  • Java8新特性,Lambda,Stream流
  • 模型训练之train.py代码解析
  • linux 复习
  • C语言刷题------(2)
  • JVM 之 OopMap 和 RememberedSet
  • Original error: gsmCall method is only available for emulators
  • React Native从文本内容尾部截取显示省略号
  • 机器学习笔记之优化算法(十一)凸函数铺垫:梯度与方向导数
  • 探究Vue源码:mustache模板引擎(11) 递归处理循环逻辑并收尾算法处理
  • STM32 CubeMX USB_CDC(USB_转串口)
  • 机器学习——卷积神经网络基础
  • 端到端自动驾驶前沿论文盘点(pdf+代码)
  • 2023年中期奶粉行业分析报告(京东数据开放平台)
  • web集群学习:基于CentOS 7构建 LVS-DR 群集并配置服务启动脚本
  • Flask 高级应用:使用蓝图模块化应用和 JWT 实现安全认证
  • 【Grafana】中文界面配置 v10.0.3
  • web前端html
  • Unity 编辑器选择器工具类Selection 常用函数和用法
  • ArcGIS在洪水灾害普查、风险评估及淹没制图中应用教程
  • Oracle日志相关操作
  • IMV8.0
  • 【Linux 网络】 数据链路层协议
  • GWJDN-400型2MHZ自动平衡高温介电温谱仪
  • 第十五次CCF计算机软件能力认证
  • ThreadPoolExecutor线程池详解
  • 【VB6|第22期】用SQL的方式读取Excel数据
  • 融云:从「对话框」跳进魔法世界,AIGC 带给社交的新范式
  • UWB伪应用场景 - 别再被商家忽悠