1:循环硬解
var findNumberIn2DArray = function(matrix, target) {
if(!matrix.length) return false;
let len1 = matrix.length;
let len2 = matrix[0].length;
for(let i = 0; i < len1; i++){
for(let j = 0; j < len2; j++){
if(target == matrix[i][j]){
return true
}
}
}
return false
};
2:借用set函数 判断长度或者是交集皆可
var findNumberIn2DArray = function(matrix, target) {
if(!matrix.length) return false;
function flatten(arr) { return [].concat( ...arr.map(x => Array.isArray(x) ? flatten(x) : x) ) }
var mySet = new Set(flatten(matrix))
if(mySet.size!=mySet.add(target).size){
return false
}
return true
};
3: 坐标轴法,从左下开始,如果大于则向右移动,小于则向上移动
var findNumberIn2DArray = function(matrix, target) {
if(!matrix.length) return false;
let x = matrix.length - 1, y = 0;
while(x >= 0 && y < matrix[0].length){
if(matrix[x][y] === target){
return true;
}else if(matrix[x][y] > target){
x--;
}else{
y++;
}
}
return false;
};