数据解构和算法

70.二维数组中的查找

2022-03-02  本文已影响0人  wo不是黄蓉

day17: 剑指 Offer 04. 二维数组中的查找(中等)
思路:

var findNumberIn2DArray = function (matrix, target) {
  //遍历每个数组,二分法查找元素
  for (let i = 0; i < matrix.length; i++) {
    let tempArr = matrix[i];
    console.log(tempArr);
    if (hasTarget(tempArr, target)) {
      return true;
    }
  }
  return false;
};
//查找目标元素-二分法
hasTarget = function (arr, target) {
  let l = 0,
    r = arr.length - 1;
  while (l <= r) {
    mid = (l + r) >>> 1;
    if (target > arr[mid]) {
      l = mid + 1;
    } else if (target < arr[mid]) {
      r = mid - 1;
    } else {
      return true;
    }
  }
  return false;
};

第二种:

var findNumberIn2DArray1 = function (matrix, target) {
  if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
    return false;
  }
  let rows = matrix.length,
    cloumns = matrix[0].length,
    row = 0,
    cloumn = cloumns - 1;
  while (row < rows && cloumn >= 0) {
    //获取到每一行的最后一个元素
    let num = matrix[row][cloumn];
    if (num === target) {
      return true;
    } else if (num > target) {
      //向左移动
      cloumn--;
    } else {
      //向下移动
      row++;
    }
  }
  return false;
};
上一篇 下一篇

猜你喜欢

热点阅读