JZ01 -二维数组中的查找(JS)


题目介绍:滑动窗口最大值问题


在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


加入知识分享 : 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;
	}
}

JZ01 -二维数组中的查找(JS)_第1张图片

//二维数组定义
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;
    }


测试结果:


JZ01 -二维数组中的查找(JS)_第2张图片
念念不忘,必有回响!

你可能感兴趣的:(JZoffer,剑指offer,二维数组中的查找,算法)