剑指offer题解之一——二维数组中的查找

1.题目

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

2.解题思路

剑指offer题解之一——二维数组中的查找_第1张图片
  • 从左往右递增,从上到下递增,则判断要从左下角或右上角开始。

  • 若从左下角开始,

    1. 比较该数x与输入数n的大小,若x>n,则比较位置向上。直到x
    2. 重复1过程,直到x==n(含有)或循环完整个表(不含有)。
  • 输入n为12,则从左下角开始,
    x=13>n=12向上,x=8 x=12==n=12,则包含该整数。

  • 输入n为9,则从左下角开始,
    x=13>n=9,向上,x=8 x=12>n=9,向上,x=6 x=8n=9,向上,
    x=11>n=9,向上,循环完整个表,则不包含该整数。

剑指offer题解之一——二维数组中的查找_第2张图片

3.code

public class Solution {
    public boolean Find(int [][] array,int target) {
        int len=0;
        if(array.length!=0){
            len=array.length-1;
        }else{
            return false;
        }
        int i=0;
        while((len>=0)&&(itarget){//列数向上
                len--;
            }else if(array[len][i]

你可能感兴趣的:(剑指offer题解之一——二维数组中的查找)