二維數組的查找(基於js)


題目:

在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

解答:

最簡單粗暴的方式就是遍歷整個二維數組,其算法復雜度為O(n^2),但是有更好的方式:

從左下角(或者右上角)開始遍歷數組,如果當前的元素大於target,則說明目標元素在當前元素的右邊;如果當前的元素小於target,則說明目標元素在當前元素的上邊

這時的算法復雜度為O(n)

 

function Find(target, array){
  var col = array[0].length;
  var row = array.length;
  let i = row-1,j=0;
  while(i>=0&&j<col){
    if(array[i][j]>target){
      i--;
    }
    else if(array[i][j]<target){
      j++;
    }
    else{
      return true;
    }
  }
  if(i<0||j>=col){
    return false;
  }
}
module.exports = {
  Find : Find
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM