leetcode 240
思路
1. 矩陣特性
首先,利用矩陣的特性是解題的關鍵:
- 每行的元素遞增
- 每列的元素遞增
這意味著,如果我們在矩陣中從右上角或左下角開始搜索,可以有效縮小搜索范圍
2. 從右上角開始搜索
- 將搜索的起點定位在矩陣的右上角
- 如果當前元素等于目標值,返回 true
- 如果當前元素大于目標值,則向左移動(列數 -1)
- 如果當前元素小于目標值,則向下移動(行數 +1)
- 這種方法保證每一步都在縮小查找范圍,并且
時間復雜度為 O(m + n)
,其中 m 是行數,n 是列數
3. 處理邊界條件
在實現過程中,需要處理好矩陣的邊界條件,例如:
- 矩陣的行數和列數可以為零
- 確保不越界訪問矩陣元素
參考視頻:https://www.bilibili.com/video/BV1hEVWzvEsL/?spm_id_from=333.337.search-card.all.click&vd_source=ccb42000243a376a86b435878466ec00
實現
var searchMatrix = function (matrix, target) {let startRow = 0, endCol = matrix[0].length - 1;// 從右上角開始while (startRow < matrix.length && endCol >= 0) {if (matrix[startRow][endCol] === target) {return true} else if (matrix[startRow][endCol] > target) {endCol--} else {startRow++}}return false
};