ZhengXingchi / ZhengXingchi.github.io

Apache License 2.0
0 stars 0 forks source link

剑指offer(1)二维数组的查找 #60

Open ZhengXingchi opened 4 years ago

ZhengXingchi commented 4 years ago

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

ZhengXingchi commented 4 years ago

分析

题目不难,而且给出的限制也很小,我一开始试试用了暴力逐步循环发现也能通过,但是这题目设计的初衷不是简单的让你用暴力循环查找出来,而是要注意是有顺序的。所以我们查找的起始点最好从二维数组中的中间的点开始,不过为了方便,我们一般都是选择最左下角的那个点作为起始点,也就是a[array.lenth][0],比它大就往右边走,比它小就往上面走。话不多说,上代码。

 function Find(arr, target) {
      let rows = arr.length - 1
      let cols = arr[0].length - 1
      let row = rows
      let col = 0
      if (rows === 0 && cols === 0) {
        return false
      }
      while (col <= cols && row > 0) {
        if (arr[row][col] > target) {
          row--
        } else if (arr[row][col] < target) {
          col++
        } else {
          return true
        }
      }
      return false
    }