---恢复内容开始---
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路
既然从左到右递增,从上到下也是递增,那就先找一个基点,基点就是右上角那个点。
如果target小于右上角的点,说明这个值肯定是在左边。
如果target大于右上角的点,说明这个值肯定是在下边。
要求就是每次不符合,要能够剔除一行或者一列是最快的解法。
1 public class Solution { 2 public boolean Find(int target, int [][] array) { 3 4 int hang = array.length; 5 int lie = array[0].length; 6 7 int i=0; 8 int j=lie-1; 9 while(i<=hang-1 && j>=0) 10 { 11 if(array[i][j]>target) 12 { 13 j--; 14 } 15 else if (array[i][j]<target) 16 { 17 i++; 18 } 19 else 20 { 21 return true; 22 } 23 } 24 25 return false; 26 27 } 28 }
---恢复内容结束---