二维数组中查找(剑指office)
Posted GaoYang-笔迹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组中查找(剑指office)相关的知识,希望对你有一定的参考价值。
1、题目要求
在一个 N * M的二维数组中,每一行都按照从左到右的递增顺序排序,每一列都按照从上到下递增顺序排序,输入这样一个二维数组和一个整数,判断数组中是否包含该整数。
示例:
[
[1,4,7,11,15],
[2,5,8,12,19],
[3,6,9,16,22],
[10,13,14,24],
[18,21,23,30]
]
给定target = 5,返回 true
给定target = 17,返回 false
2、解题思路
是根据题目中每一行都按照从左到右的递增顺序排序,每一列都按照从上到下递增顺序排序,这两个条件,我们可以先将target和每一行的第一个进行对比,当target小于所在行的第一列的元素时,我们就不再去遍历此行。当target大于所在行的第一列就去遍历这一行,判断是否包含!
3、具体实现
public static void main(String[] args)
int[][] matrix =
1,4,7,11,15,
2,5,8,12,19,
3,6,9,16,22,
10,13,14,24,
18,21,23,30
;
int target = 15;
boolean ble = new dem3().findNumberIn2DArray(matrix, target);
System.out.println(ble);
public boolean findNumberIn2DArray(int[][] matrix,int target )
if((matrix == null || matrix.length == 0)||(matrix.length == 1 && matrix[0].length == 0))
return false;
// matrix[i][j] 对应的是右上角开始
int i = 0, j = matrix[0].length - 1;
while(i <= matrix[0].length -1 && j >= 0)
if(target == matrix[i][j]) return true;
if(target < matrix[i][j])
j--;
else
i++;
return false;
以上是关于二维数组中查找(剑指office)的主要内容,如果未能解决你的问题,请参考以下文章