搜索二维矩阵 II—leetcode240
生活随笔
收集整理的這篇文章主要介紹了
搜索二维矩阵 II—leetcode240
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個高效的算法來搜索?m?x?n?矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性:
- 每行的元素從左到右升序排列。
- 每列的元素從上到下升序排列。
示例:
現有矩陣 matrix 如下:
[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30] ]給定 target?=?5,返回?true。
給定?target?=?20,返回?false。
?
方法:
- 左下角的元素是這一行中最小的元素,同時又是這一列中最大的元素。比較左下角元素和目標:
- 若左下角元素等于目標,則找到
- 若左下角元素大于目標,則目標不可能存在于當前矩陣的最后一行,問題規模可以減小為在去掉最后一行的子矩陣中尋找目標
- 若左下角元素小于目標,則目標不可能存在于當前矩陣的第一列,問題規模可以減小為在去掉第一列的子矩陣中尋找目標
- 若最后矩陣減小為空,則說明不存在
?
?
class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if(matrix.empty())return false;int row = matrix.size();int col = matrix[0].size();int i=row-1; int j=0;while(i>=0 && j<col){if(matrix[i][j]==target)return true;else if(matrix[i][j]>target)i--;elsej++;}return false;} };?
總結
以上是生活随笔為你收集整理的搜索二维矩阵 II—leetcode240的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分割等和子集—leetcode416
- 下一篇: 整数反转—leetcode7