牛客网-二维数组的查找
时间:2022-07-22
本文章向大家介绍牛客网-二维数组的查找,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
//解决思路:
//如数组样式如下:
// 1 2 3 4
// 2 3 4 5
// 3 4 5 6
//正常查找的过程,本质就是排除的过程,如果双循环查找,本质是一次排除一个,效率过低
//根据题面要求,我们可以采取从右上角(或左下角)进行比较(想想为什么?),这样可以做到一次排除一行或者一列
1、忽略时间空间复杂度,直接遍历,暴力解法
public class Solution {
public boolean Find(int target, int [][] array) {
for (int[] ints : array) {
for (int anInt : ints) {
if(anInt==target)
return true;
}
}
return false;
}
}
2、优化解法,考虑时间和空间复杂度
看到查找应该,就是想尽办法去排除。
查找的过程中你排除的越多,你的算法也就越快。
根据题面要求,我们可以采取从右上角(或左下角)进行比较(想想为什么?),这样可以做到一次排除一行或者一列
if(array==null)
return false;
int i = 0,//i:指向每一行最小的值
j=array[0].length-1;//j:指向每一行最大的值
while (i < array.length && j >=0 ){
//此时array[i][j] 一定这一行最大的
if(target < array[i][j]){
j--;//如果比这一行的最大值小,指向这一行最大值的指针j就j-1,移动下一个元素
//如果查找的数大于这个最大值,就说明肯定是在这一列,那么就i++就可以继续找这一列了
}else if (target > array[i][j]){
i++;
//查找成功返回true
}else{
return true;
}
}
return false;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网站渗透攻防Web篇之SQL注入攻击高级篇
- 网站渗透攻防Web篇之SQL注入攻击中级篇
- Go 语言学习之 method
- 网站渗透攻防Web篇之SQL注入攻击初级篇
- VBA解析复合文档05——读取数据流
- C++核心准则E.25:如果不能抛出异常,模仿RAII方式进行资源管理
- VBA解析复合文档06——改写数据流
- PyTorch5:torch.nn总览&torch.nn.Module
- 玩转Spring中强大的spel表达式!
- C++核心准则E.18:最小限度显式使用try/catch
- C++核心准则E.19:如果无法选择适当的资源句柄,使用final_action表现清除处理
- VBA解析复合文档04——解析目录信息
- 【程序源代码】基于NetCore2.2/3.1功能强大的Cms建站系统
- Linux如何屏蔽国外IP-宝塔如何屏蔽国外IP-appnode如何屏蔽国外IP
- Spring Boot Actuator H2 RCE复现-解决篇