1. 数组-二维数组中的查找

题目描述

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

/**
 * Created by ZengXihong 2019-05-26.
 */
public class Solution1 {
    /**
     * 寻找数字 target 是否在数组 array 中
     * 原理: 从数组的左下角开始寻找该数,
     * 如果该数大于目标,则目标数在该行之上,行数递减
     * 如果该数小于目标,则目标数在该数的右侧,列数递增
     * 否则当前数等于目标数
     * 如果从左下遍历到左上都不存在,即数组不包含目标数
     * @param array 数组
     * @param target 目标数字
     * @return
     */
        public boolean find(int [][] array,int target) {
            // 获取数组的行数,减 1 是因为获取数组某个值时取值从 0 开始
            int len = array.length-1;
            int i = 0;
            // 如果当前行数大于等于 0(即第一行) 并且 取的值的坐标列数小于第一行的元素个数,则继续比较
            while((len >= 0)&& (i < array[0].length)){
                //如果当前行的第 1 个数大于 目标数,则 目标数在此行之上,故行数 减 1
                if(array[len][i] > target){
                    len--;
                // 如果当前行数的第 i 个数小于目标数,则说明该数在i 的右侧 ,故 i 加 1
                }else if(array[len][i] < target){
                    i++;
                 //否则 这个数就为目标数
                }else{
                    return true;
                }
            }
            return false;
        }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序...
    闭门造折阅读 426评论 0 0
  • 首先题目中描述了这个二维数组的特征,同行递增,同列递增。第一种:用双重循环做的,本来以为会超时,结果过了。。。第二...
    刘小小gogo阅读 431评论 0 0
  • 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增...
    凌霄文强阅读 574评论 0 2
  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 2,025评论 0 2
  • 你很怕你的太太。不是,我不怕她,我只是爱她。所谓怕只是爱的一种表现形式。 梦是什么?梦是揭示潜意识、被压抑的以及本...
    PersonalityAnne阅读 212评论 0 0

友情链接更多精彩内容