2019-09-13
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路
从题目上看,此二维数组是有序的,从右上角看,向左递减,向下递增。
- 从右上角arr[1][j]开始找,如果arr[1][j] > N,则左移;
- 如果arr[1][j] < N, 则下移;
- 如果超过边界,则N不在该二维数组中;
参考代码
1 public class Solution { 2 public boolean Find(int target, int [][] array) { 3 if(array.length == 0 || array[0].length == 0) { 4 return false; 5 } 6 int m = array.length - 1; 7 int n = 0; 8 int temp = array[n][m]; 9 while(temp != target) { 10 if(m > 0 && n < array.length - 1) { 11 if(temp < target) { 12 n++; 13 } 14 if(temp > target) { 15 m--; 16 } 17 temp = array[n][m]; 18 }else { 19 return false; 20 } 21 } 22 return true; 23 } 24 }