因为矩阵的行和列是排序的(分别从左到右和从上到下),所以在查看任何特定值时,我们可以修剪O(m)O(m)或O(n)O(n)元素。

算法:
首先,我们初始化一个指向矩阵左下角的 (row,col)(row,col) 指针。然后,直到找到目标并返回 true(或者指针指向矩阵维度之外的 (row,col)(row,col) 为止,我们执行以下操作:如果当前指向的值大于目标值,则可以 “向上” 移动一行。 否则,如果当前指向的值小于目标值,则可以移动一列。不难理解为什么这样做永远不会删减正确的答案;因为行是从左到右排序的,所以我们知道当前值右侧的每个值都较大。 因此,如果当前值已经大于目标值,我们知道它右边的每个值会比较大。也可以对列进行非常类似的论证,因此这种搜索方式将始终在矩阵中找到目标(如果存在)。

public class Solution
{public bool SearchMatrix(int[,] matrix, int target){int maxRow = matrix.GetLength(0);int maxCol = matrix.GetLength(1);if(maxRow == 0 || maxCol == 0)return false;int value = 0;int row = maxRow - 1;int col = 0;while(row >= 0 && col <= maxCol - 1){value = matrix[row,col];if(value < target)col++;else if(value > target)row--;elsereturn true;}return false; }
}

LeetCode 240. 搜索二维矩阵相关推荐

  1. LeetCode 240. 搜索二维矩阵 II(二分查找 分治)

    文章目录 1. 题目 2. 解题 2.1 从左下角或者右上角开始搜索 2.2 分治算法 1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以 ...

  2. Leetcode 240.搜索二维矩阵II (每日一题 20210727 同一题)

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

  3. leetcode 240. 搜索二维矩阵 II

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

  4. [leetcode]240. 搜索二维矩阵 II

    行.列二分: class Solution {public:bool binsearch(vector<vector<int>>& matrix, int target ...

  5. 【LeetCode】【HOT】240. 搜索二维矩阵 II(抽象二叉搜索树)

    [LeetCode][HOT]240. 搜索二维矩阵 II 文章目录 [LeetCode][HOT]240. 搜索二维矩阵 II package hot;public class Solution24 ...

  6. LeetCode Algorithm 240. 搜索二维矩阵 II

    240. 搜索二维矩阵 II Ideas 这题我记得在左神算法初级班里面有. 主要的思想就是定义两个指针row_index和col_index,从右上角开始逐个搜索. 如果matrix[row_ind ...

  7. leetcode 74. 搜索二维矩阵(二分)

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:matrix = ...

  8. 【leetcode】搜索二维矩阵 II

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

  9. leetcode 240. Search a 2D Matrix II | 240. 搜索二维矩阵 II(Java)

    题目 https://leetcode.com/problems/search-a-2d-matrix-ii/ 题解 方法1 思路类似于 leetcode 200. Number of Islands ...

最新文章

  1. geoserver 通过代码实现发布地图服务
  2. android 拖动数字选择,拖放android 3.x导致illegalStateException之后的小数字拖动
  3. ubuntu12.04安装libgl1-mesa-glx:i386问题解决办法
  4. 1.3.2 中断和异常(内中断和外中断、中断处理过程)
  5. linux 外壳的概念,Linux 与 Linux 发行版的一些概念
  6. seo关键词互点软件报价_舟山seo关键词优化软件
  7. linux启动器编辑,linux下建立启动器
  8. 解决IIS无法启动w3svc
  9. 论文查重的软件有哪些?
  10. 台式计算机加固态硬盘,台式电脑加固态硬盘教程_固态硬盘台式机安装方法-win7之家...
  11. android 常用模块,超实用的几款Xposed模块,安卓发烧必备
  12. 台湾J2ME专家王森北京讲座---掌上开发专业研讨
  13. postgresql 中文azw3_制作mobi格式的PostgreSQL文档
  14. 企业网站常见误区-金瑞帆高端建站
  15. 设备驱动安装不上怎么办?
  16. android 服务开机启动慢,Android App启动慢原因
  17. 硕士毕业论文应该如何梳理论文框架?
  18. B2B电商平台怎么解决大额订单在线支付问题?
  19. 公鸡3块钱1只,母鸡5块钱1只,小鸡1块钱3只,用100块买100只鸡,一共多少种买法,分别是什么?
  20. 社区公共安全治理探索:达观舆情信息智能处理解决方案

热门文章

  1. linux clone线程,如何在Linux上使用clone()创建真正的线程?
  2. oracle shrink space compact,oracle 学习笔记 Shrink 参数 compact
  3. [蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
  4. Aerodynamic CodeForces - 1300D(计算几何判断是否为中心对称图形)
  5. python2中可以使用print()函数吗_在Python2.x中使用print()(函数版本)
  6. 【sklearn学习】特征选择
  7. 小老板,我300M的网,网速很慢怎么办?
  8. 疯子的算法总结(一) 位运算(快速幂、快速乘)
  9. [深度学习] 自然语言处理 --- Self-Attention(二) 动画与代码演示
  10. 把学单片机过程中遇到的问题与大家分享