22.二维数组中的查找

2019-10-30  本文已影响0人  percykuang

题目

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

code


// [1, 2, 3, 4]
// [6, 7, 8, 9]

// 思路:1、从左下角第一个数开始,
//      2、如果目标数字比这个数字大,则说明目标数字在这个数字的右边
//      3、如果目标数字比这个数字小,则说明目标数字在上一层数组里
//      4、重复上述步骤
function find(arr, target) {
  if (!arr || arr.length === 0) {
    return false
  }
  if (!arr[0].length) {
    return false
  }
  var cols = arr[0].length - 1
  var maxRow = arr.length - 1
  var minCol = 0

  while (maxRow >= 0 && minCol <= cols) {
    var curNum = arr[maxRow][minCol]
    if (curNum === target) {
      return true
    } else if (curNum > target) {
      maxRow--
    } else {
      minCol++
    }
  }
  return false
}
上一篇 下一篇

猜你喜欢

热点阅读