题目介绍:滑动窗口最大值问题
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
加入知识分享 : JS定义和赋值二维数组
定义二维数组
var array = [];
var rowCount = 3; //定义二维数组的行数
var colCount = 3; //定义二维数组的列数
for(var i = 0 ; i < rowCount; i++){
array[i] = [];
for(var j = 0; j < colCount; j++){
//二维数组全部初始化为0
array[i][j] = 0;
}
}
//二维数组定义
var array = [[0,1,2],[3,4,5],[6,7,8]];
题目解析:
function FindTarget(target,array){
//取到每行的标记rowCount
var rowCount = array.length - 1;
//分别用i,j来表示对应的行和列
var i ,j;
//i代表行,j代表列,条件 i >= 0 && j < array[i].length; 确保查询元素不会越界
for(i = rowCount, j = 0; i >= 0 && j < array[i].length;){
//如果查询到了该数
if(target == array[i][j]){
return true;
} else if(target > array[i][j]){
//如果这个数大于二维数组当前的元素,那么就依次向后移动j 从array[2][0] -> array[2][1] 等等
j++;
//继续执行
continue;
} else if(target < array[i][j]){
//如果这个数小于二维数组当前的元素,那么就依次向后移动j 从array[2][0] -> array[1][0] 等等
i--;
continue;
}
}
// 否则的话,返回false
return false;
}
测试结果:
念念不忘,必有回响!