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

Java——二维数组中的查找

题目链接

牛客在线oj题——二维数组中的查找

题目描述

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]

给定 target = 7,返回 true。
给定 target = 3,返回 false。

数据范围:矩阵的长宽满足 0≤n, m≤500 0≤n,m≤500 , 矩阵中的值满足 0≤val≤10 ^ 9 0≤val≤10 ^ 9

进阶:空间复杂度 O(1),时间复杂度 O(n+m)

题目示例

示例1:

输入:
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值:
true

说明:
存在7,返回true

示例2:

输入:
1,[[2]]

返回值:
false

示例3

输入:
3,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]

返回值:
false

说明:
不存在3,返回false

解题思路

查找一个元素最省力的方式就是暴力搜索,但是这种方式太粗暴,我们应该根据题目给出的条件来找到合理的搜索方法。根据条件,排除的元素越多,证明搜索的方法越牛逼

题目给出条件——每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。因此如果当前位置的元素大于目标值,那么和当前位置同一列的,位于当前元素下面的元素都可以排除
在这里插入图片描述
同样的,如果当前位置的元素小于目标值,那么和当前位置同一行的,位于当前元素左面的元素都可以排除
在这里插入图片描述
因此,我们只需要从数组的右上角开始和目标值比较,如果小于目标值就往下走,如果大于目标值就向左走。
如果走出了数组的边界,证明该数组中没有这个元素

完整代码

public class Solution {public boolean Find(int target, int [][] array) {if(array == null){return false;}int i = 0;int j = array[0].length - 1;while(i < array.length && j >= 0){if(target < array[i][j]){j--;} else if (target > array[i][j]){i++;} else {return true;}}return false;}
}
http://www.lryc.cn/news/58580.html

相关文章:

  • Android 9.0 添加关机铃声功能实现
  • IPv4 和 IPv6 的组成结构和对比
  • Spring的事务管理
  • MCAL知识点(十六):VADC驱动配置详解(理论基础篇)
  • MySQL--库的操作--校验规则对于数据库的影响--0409
  • markdown-it基本使用
  • CMake入门教程【核心篇】8.3对象库
  • 单片机_CT107D训练平台电路原理图\蓝桥杯训练板\IO扩展模块\74HC138译码器
  • Rabbitmq消息确认机制
  • FinClip 云开发实践(附小程序demo)
  • 真正好用的工业品ERP系统应该是什么样的?
  • Shiro重定向
  • Greenplum数据库执行器——PartitionSelector执行节点
  • POJ 2311 Cutting Game
  • CTF-PHP反序列化漏洞1-基础知识
  • 【面试】记一次安恒面试及总结
  • 刹车制动(卡钳)TOP3供应商份额超50%,哪些本土供应商突围
  • Go分布式爬虫笔记(二十二)
  • 跨线程修改主界面
  • 国内ChatGPt研发-中国chatGPT
  • springboot的rest服务配置服务的根路径
  • MySQL B+Tree 索引优化技巧
  • 100种思维模型之逆向思维模型-46
  • C/C++每日一练(20230413)
  • volatile和synchronized的区别
  • Cadence Allegro 导出Unplaced Component Report报告详解
  • 面试了上百位性能测试后,我发现了一个令人不安的事实...
  • 天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)
  • 跨境电商的行业现状与发展趋势分析
  • 适配器设计模式