04 二维数组中的查找

Posted by CodingWithAlice on July 18, 2019

04 二维数组中的查找(javascript)

方法一:暴力遍历

/*全部遍历一遍*/
function Find(target, array)
{
    for(let i = 0;i<array.length;i++){
        for(let j=0;j<array[0].length;j++){
            if(array[i][j] == target){
                return true
            }
        }
    }
}

方法二:以左下角为起点

/* 以左下角为起点,target大于左下角的值,去掉第一列,即j+1,*/
			function Find(target, array) {
            var cols = array[0].length;
            var rows = array.length;
            for (var i = cols, j = 0; i >= 0 && j < rows;) {
                if (target > array[rows - 1][j]) {
                    cols--;
                    j++;
                    continue
                } else if (target < array[rows - 1][j]) {
                    rows--;
                    i--;
                    continue
                } else if (target == array[rows - 1][j]) {
                    return true
                }
            }
            return false
        }

方法三:(三种之中的最优解)


function Find(target, array)
{
    var cols=array[0].length;
    var rows=array.length;
    for(var i=rows-1,j=0;i>=0 && j<cols;){
            if(target > array[i][j]){
                j++;
                continue
            }else if(target < array[i][j]){
                i--;
                continue
            }else if(target == array[i][j]){
                return true
            }
    } 
    return false
}