剑指offer——二维数组的查找

---恢复内容开始---

题目:

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

解题思路

既然从左到右递增,从上到下也是递增,那就先找一个基点,基点就是右上角那个点。

如果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 }

---恢复内容结束---

原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10838782.html