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 :未經授權,不得轉載

有問題的小夥伴請在下方留言,喜歡就點個贊吧

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