前言
最近在看牛客网的面试题, 发现在剑指offer 里面的好多题,网上不怎末容易找到答案, 那就我自己做个记录吧,也权当为同行们提供个参考, 由于是初次写, 所以不好的地方还望见谅。
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
个人感觉利用es6 数组方法some 查询起来可能更简单, 实际运行时间:142ms占用内存:11028k
function Find(target, array) { return array.some(item => { return item.some(items => {return items === target}) === true }) } module.exports = { Find : Find };
网友方法
原理上基本类似,先比较大小然后查询具体的行
function Find(target, array) { let i = 0 let j = array[i].length - 1 let min = array[0][0] let max = array[array.length-1][array[0].length-1] if (target < min || target > max) return false while (i < array.length && j >= 0) { if (array[i][j] < target) { i++ } else if (array[i][j] > target) { j-- } else { return true } } return false }