二维数组中的查找

题目描述

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

解题思路

由于此数组每一行从左到右递增,每一列从上到下递增,所以可以根据右上角的数X来和target比较。

  • 如target比X大,则target不在X所在这行,需要往下移一行,可以缩小区间。
  • 如target比X小,则target不在X所在这列,需要往左移一列。
  • 如target=X,则含有该整数

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Solution {
public boolean Find(int target, int [][] array) {
if(array == null || array.length == 0 || array[0].length == 0){
return false;
}
int rows = array.length;
int cols = array[0].length;
//array[row][column]为右上角的数
int row = 0;
int column = cols - 1;
while(row <= rows - 1 && column >= 0){
if(array[row][column] > target){
column--;
}else if(array[row][column] < target){
row++;
}else{
return true;
}
}
return false;
}
}
坚持原创技术分享,您的支持将鼓励我继续创作!