JavaScript 习题:在一个二维数组中,每个一维数组长度相同,每一行按照 …… 请完成一个函数输入一个这样的二维数组,和一个整数,判断数组中是否含有该整数?

[题目来源:Duing] 在一个二维数组中,每个一维数组长度相同,每一行按照从左到右的顺序递增,每一列按照从上往下的顺序递增。请完成一个函数输入一个这样的二维数组,和一个整数,判断数组中是否含有该整数?

[解析来源:叁贰壹] 我自己,hahaha~

依题意,每一行按照从左到右的顺序递增,每一列按照从上往下的顺序递增。那么你首先就会想到暴力破解,时间复杂度是O(n^2);但是,根据题意是可以做到更简单的,就像下面。
arr[0][0] 是整个数组最小的数,如果 target 比它小,那就直接返回 false

function getTarget(target, arr) {
    if (arr[0][0] > target) return false;
    var row = 0,
        col = arr[0].length - 1,
        result = false;
    while (row < arr.length && col >= 0) {
        if (target > arr[row][col]) row++;
        else if (target < arr[row][col]) col--;
        else {
            result = true;
            break;
        }
    }
    return result;
}

var target = Math.floor(prompt("请输入目标:"));
var arr = eval(prompt("请输入数组:"));
getTarget(target, arr) ? alert("目标在数组中") : alert("目标不在数组中");



感谢观看 期待关注




在这里插入图片描述

知乎:叁贰壹

简书:带只拖鞋去流浪

关注我,带你一起写bug

warning :未经授权,不得转载

有问题的小伙伴请在下方留言,喜欢就点个赞吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章