剑指Offer(一):二维数组中查找

2021-01-07  本文已影响0人  八格哚

问:在一个二维数组中,每一行都是从左到右递增的排列顺序,每一列都是从上到下递增的排列顺序。 请写一个函数,实现输入一个二维数组和整数,判断数组中是否含有该整数。

解:简述思路 - 选取该二维数组最右上角的数字元素,如果该数字等于输入的数字,查找结束;如果该数字大于输入的数字,则忽略该数字所在的列;反之,如果该数字小于输入的数字,则忽略该数字所在的行。

代码实现如下(JavaScript):

function find(arr, number) {
  let rows = arr.length;
  let columns = arr[0].length;
  if (rows > 0 && columns > 0) {
    let row = 0;
    let col = columns - 1;
    while (row < rows && col >= 0) {
      if (number === arr[row][col]) {
        return true;
      } else if (number < arr[row][col]) {
        col -= 1;
      } else {
        row += 1;
      }
    }
  }
  return false;
}
上一篇下一篇

猜你喜欢

热点阅读