剑指 Offer 04. 二维数组中的查找
剑指 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. 二维数组中的查找相关推荐
- 【LeetCode】剑指 Offer 04. 二维数组中的查找
[LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...
- 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找
难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...
- Leetcode 剑指 Offer 04. 二维数组中的查找 (每日一题 20210727)
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例:现有矩 ...
- 【千字过程分析】剑指 Offer 04. 二维数组中的查找
立志用最少的代码做最高效的表达 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数 ...
- C语言二维数组找出交集,【leetcode C语言实现】剑指 Offer 04. 二维数组中的查找...
题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...
- 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找
1. 题目 力扣leetcode-cn.com 2. 描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二 ...
- 【算法】剑指 Offer 04. 二维数组中的查找 【重刷】
1.概述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 剑指offer 04.二维数组中的查找 我妹妹都看的懂的方法
⭐欢迎来到剑指offer好题精选专栏,一起学习,一起进步⭐ 题目信息: 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请 ...
- Leetcode每日一题:剑指 Offer 04.(二维数组中的查找)
思路:有序+查找元素,第一想到的就是二分法,所以我对每行采用二分法,每行的复杂度为O(m),那么总的复杂度就是O(nlogm):看题解从右上角开始,这个数比目标值大,就往左移一列,比目标值小,就往下移 ...
最新文章
- bitcask存储引擎
- python的format输出报文_python构造IP报文实例
- STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。
- 033_jdbc-mysql数据库连接池
- 语音信号的分帧加窗的matlab实现
- openCV实战(一):rectangle函数使用
- spring aop抽取切点表达式
- 华为内部存储转sd卡_高调谈洗牌 2019年中国存储市场下半场的关键词是“低调”吗?...
- 基础知识:语言、编程、计算机组成、cpu、存储器
- 拓展阅读 —— G6 坐标系深度解析
- eclipse android 第一个程序,Eclipse 开发 Android,第一个 HelloWord 程序(学习1)-Fun言
- Response.AddHeader
- pytorch_GPU安装
- python小飞机程序
- godaddy无法修改域名服务器,godaddy的DNS A记录不能修改原因
- java3d Intellij suddenly throwing ClassNotFoundException
- 【MYSQL】【基础知识】【mysql联合主键如何 in查询】
- 速读原著-TCP/IP(子网寻址)
- CF1637E. Best Pair
- FreeBSD网站平台建设全过程(一、系统安装)
热门文章
- win10 SystemParametersInfo 设置屏保 不好使_抖音网红屏保时钟软件(附使用教程)...
- 用matlab求方程组解的三种方法
- PHP实现站内信设计思路与方案
- Kibana常用搜索语法
- 支付宝淘宝巨变,这个功能我等了10年,终于支持修改唯一ID了
- 【安装库】WARNING: A newer version of conda exists.
- 6.1 Verbatim环境
- 万字长文深度剖析面向对象的javascript
- C#:实现Euclidean distance欧氏距离算法(附完整源码)
- App Store 评分和评论:用户评论如何影响 App Store 排名