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

1.题目

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

2.解题思路

  • 从左往右递增,从上到下递增,则判断要从左下角或右上角开始。

  • 若从左下角开始,

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

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

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)&&(i<array[0].length)){
            if(array[len][i]>target){//列数向上
                len--;
            }else if(array[len][i]<target){//行数向右
                i++;
            }else{
                return true;
            }
        }
        return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 1,177评论 1 1
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,195评论 5 19
  • 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输...
    minningl阅读 481评论 0 0
  • 剑指 offer 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...
    faremax阅读 2,263评论 0 7
  • 人儿在霜雪炙阳柔风的游戏里 懵懂, 而现在正是 上演夏山之盟; 八成早忘了 三月前的春意正浓, 变迁变化变换间 谁...
    Janeyan_阅读 440评论 2 3