剑指offer(1)js实现二维数组中的查找

题目描述

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

实现思路

从右上角或者左下角的数字开始查找,则每一次都可以在数组的查找范围中排除一行或者一列,这样就可以一步步缩小查找范围,直到查找到要找的数字或者查找范围为空。

js中多维数组是以嵌套的方式定义的,所以行数即为数组长度,列数为任意一个子数组的长度

实现代码:

for循环

function findRepeat(target, array){
  let row = array.length;
  let col = array[0].length;
  for (let i =0; i < row; i ++) {
    for (let j = col -1; j >=0; j --) {
      if(array[i][j] > target){
        continue;
       }else if(array[i][j] < target){
          break;
       }else{
          return true;
       }
    }
  }
  return false;
}

while循环

function findRepeat1(target, array){
    let row = array.length;
    let col = array[0].length;
    let i = row - 1;
    let j = 0;
    while (i >= 0 && j <= col - 1){
        if(array[i][j] > target){
            i --;
        }else if(array[i][j] < target){
            j ++;
        }else{
            return true;
        }
    }
    return false;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容