3 二維陣列中的查詢

2021-10-02 02:08:45 字數 936 閱讀 2115

編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性:

每行的元素從左到右公升序排列。

每列的元素從上到下公升序排列。

示例:現有矩陣 matrix 如下:

給定 target = 5,返回 true。

給定 target = 20,返回 false。

因為二維陣列每行每列都是遞增的,從二維陣列右上角開始比較,如果target < nums[row][col]則row++,

如果target > nums[row][col]則col–,否則就找到target。

class

solution

int rows = matrix.

size()

;int cols = matrix[0]

.size()

;int row =0;

int col = cols -1;

while

(row < rows && col >=0)

else

if(matrix[row]

[col]

> target)

else

}return

false;}

};

時間複雜度:o(n+m)。

時間複雜度分析的關鍵是注意到在每次迭代(我們不返回 true)時,行或列都會精確地遞減/遞增一次。由於行只能增加 m 次,而列只能減少n 次,因此在導致 while 迴圈終止之前,迴圈不能執行超過 n+m 次。因為所有其他的工作都是常數,所以總的時間複雜度在矩陣維數之和中是線性的。

空間複雜度:o(1),因為這種方法只處理幾個指標,所以它的記憶體占用是恆定的。

3 二維陣列中的查詢

參考 二分查詢方法 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。方法一 劍指offer中提供的方法 如果我們從左上角開始查詢,那麼當查詢元素比左上元素大時,無法判斷是應該向下 向...

3)二維陣列中的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 這個題目相對前面三題比較簡單,假設該二維陣列為下圖 a 主要是思路上面過去,實現起來挺簡單的,下面我介紹一下實現思路,有種...

3 二維陣列中的查詢

題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解析 取二維陣列的右上方的頂點與要找的數字比較,如果要找的數字比頂點的數字小,那麼捨棄該列 colu...