剑指offer(Javascript-3 二维数组的查找)

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

  • 算法思路:
    在二位数组中查找,由于数组是有顺序的,所以在右上角或者左下角开始查找,每次比较大小都能排除一行或者一列,一直循环找下去即可。
  • 实现思路:
    采用while循环,每比较一次就按查找的目标前进一行或者一列
function findNumber(arr, num) {
                var row = arr.length;
                var i = row - 1;
                var col=arr[0].length;
                var j = 0;
                while (i >= 0 && j<=col-1) {
                    if (arr[i][j] > num) {
                        i--;
                    } else if (arr[i][j] < num) {
                        j++;
                    } else {
                        return true;
                    }
                }
                return false;
            }

for循环

  function findNumber(arr, num) {
                var row = arr.length;
                var col=arr[0].length;
                for (var i = 0; i < row;i++) {
                    for (var j = col-1; j >=0; j--) {
                        if(arr[i][j]>num){
                            continue;
                        }else if(arr[i][j]<num){
                            //i++;
                            break;
                        }else{
                            return true;
                        }
                    }
                }
                return false;
                
            }

!由于for循环的机制是 初始化-判断-函数体-表达式-判断-函数体-表达式。。。由于表达式中已经含有j--和i++所以在函数体中break和continue之后不需要在做j--和i++的运算,如果运算就重复了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 剑指 offer 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...
    faremax阅读 2,248评论 0 7
  • 今天主讲零班新成员许小言。
    李思丞阅读 417评论 0 2
  • 只是,想起来的时候,已经不联络很久很久,久到只剩下好久没有联系的联系方式。 “看完一部电影,突然好想你们”,莫名其...
    醒目路飞阅读 427评论 0 3
  • 聆听是这段远途中我唯一能做好的, 虽然偶尔我也不忘吐槽一番。 交流是需要时刻走心的,因为我懂。 但选择有时却成了恐...
    一叶一葡挞阅读 179评论 0 1