#yyds干货盘点# 面试必刷TOP101:二维数组中的查找

Posted 97的风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 面试必刷TOP101:二维数组中的查找相关的知识,希望对你有一定的参考价值。

1.简述:

描述

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

[

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

]

给定 target = 7,返回 true。

给定 target = 3,返回 false。

数据范围:矩阵的长宽满足  , 矩阵中的值满足 进阶:空间复杂度  ,时间复杂度 

示例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

2.代码实现:

public class Solution 
public boolean Find(int target, int [][] array)
//优先判断特殊
if(array.length == 0)
return false;
int n = array.length;
if(array[0].length == 0)
return false;
int m = array[0].length;
//从最左下角的元素开始往左或往上
for(int i = n - 1, j = 0; i >= 0 && j < m; )
//元素较大,往上走
if(array[i][j] > target)
i--;
//元素较小,往右走
else if(array[i][j] < target)
j++;
else
return true;

return false;


以上是关于#yyds干货盘点# 面试必刷TOP101:二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 面试必刷TOP101:矩阵最长递增路径

#yyds干货盘点# 面试必刷TOP101:数组中只出现一次的两个数字

#yyds干货盘点# 面试必刷TOP101:岛屿数量

#yyds干货盘点# 面试必刷TOP101:反转字符串

#yyds干货盘点# 面试必刷TOP101:单链表的排序

#yyds干货盘点# 面试必刷TOP101:跳台阶