剑指 Offer 04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

示例:

现有矩阵 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。

给定 target = 20,返回 false。

  • 这个题目首先可以把所有的数字全部遍历一遍,如何求解,当然,题目说使用高效的函数,暴力破解的明显不符合题意

  • 我们重新想一个思维,我们可以寻找一个地方,即可兼顾递增,也可以兼顾递减,这个地方为右顶点,即为 matrix [abscissa] [ordinate]

    (abscissa = 0, ordinal = matrix.length-1)

  • 当前数值大于target时 我们的横坐标减1 即matrix[abscissa] [ordinate-1]

  • 当前数值小于target时,我们纵坐标加1 即matrix[abscissa+1] [ordinate-1]

class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return false;}int abscissa = 0;int ordinate = matrix[0].length - 1;while (abscissa < matrix.length && ordinate >= 0) {if (matrix[abscissa][ordinate] == target) {return true;} else if (matrix[abscissa][ordinate] > target) {ordinate--;} else {abscissa++;}}return false;}
}

剑指 Offer 04. 二维数组中的查找相关推荐

  1. 【LeetCode】剑指 Offer 04. 二维数组中的查找

    [LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...

  2. 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找

    难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...

  3. Leetcode 剑指 Offer 04. 二维数组中的查找 (每日一题 20210727)

    在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例:现有矩 ...

  4. 【千字过程分析】剑指 Offer 04. 二维数组中的查找

    立志用最少的代码做最高效的表达 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数 ...

  5. C语言二维数组找出交集,【leetcode C语言实现】剑指 Offer 04. 二维数组中的查找...

    题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...

  6. 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找

    1. 题目 力扣​leetcode-cn.com 2. 描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二 ...

  7. 【算法】剑指 Offer 04. 二维数组中的查找 【重刷】

    1.概述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  8. 剑指offer 04.二维数组中的查找 我妹妹都看的懂的方法

    ⭐欢迎来到剑指offer好题精选专栏,一起学习,一起进步⭐ 题目信息: 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请 ...

  9. Leetcode每日一题:剑指 Offer 04.(二维数组中的查找)

    思路:有序+查找元素,第一想到的就是二分法,所以我对每行采用二分法,每行的复杂度为O(m),那么总的复杂度就是O(nlogm):看题解从右上角开始,这个数比目标值大,就往左移一列,比目标值小,就往下移 ...

最新文章

  1. bitcask存储引擎
  2. python的format输出报文_python构造IP报文实例
  3. STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。
  4. 033_jdbc-mysql数据库连接池
  5. 语音信号的分帧加窗的matlab实现
  6. openCV实战(一):rectangle函数使用
  7. spring aop抽取切点表达式
  8. 华为内部存储转sd卡_高调谈洗牌 2019年中国存储市场下半场的关键词是“低调”吗?...
  9. 基础知识:语言、编程、计算机组成、cpu、存储器
  10. 拓展阅读 —— G6 坐标系深度解析
  11. eclipse android 第一个程序,Eclipse 开发 Android,第一个 HelloWord 程序(学习1)-Fun言
  12. Response.AddHeader
  13. pytorch_GPU安装
  14. python小飞机程序
  15. godaddy无法修改域名服务器,godaddy的DNS A记录不能修改原因
  16. java3d Intellij suddenly throwing ClassNotFoundException
  17. 【MYSQL】【基础知识】【mysql联合主键如何 in查询】
  18. 速读原著-TCP/IP(子网寻址)
  19. CF1637E. Best Pair
  20. FreeBSD网站平台建设全过程(一、系统安装)

热门文章

  1. win10 SystemParametersInfo 设置屏保 不好使_抖音网红屏保时钟软件(附使用教程)...
  2. 用matlab求方程组解的三种方法
  3. PHP实现站内信设计思路与方案
  4. Kibana常用搜索语法
  5. 支付宝淘宝巨变,这个功能我等了10年,终于支持修改唯一ID了
  6. 【安装库】WARNING: A newer version of conda exists.
  7. 6.1 Verbatim环境
  8. 万字长文深度剖析面向对象的javascript
  9. C#:实现Euclidean distance欧氏距离算法(附完整源码)
  10. App Store 评分和评论:用户评论如何影响 App Store 排名