力扣算法题—074搜索二维矩阵
生活随笔
收集整理的這篇文章主要介紹了
力扣算法题—074搜索二维矩阵
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
編寫一個高效的算法來判斷?m?x?n?矩陣中,是否存在一個目標(biāo)值。該矩陣具有如下特性:
- 每行中的整數(shù)從左到右按升序排列。
- 每行的第一個整數(shù)大于前一行的最后一個整數(shù)。
示例?1:
輸入: matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50] ] target = 3 輸出: true示例?2:
輸入: matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50] ] target = 13 輸出: false1 #include "_000庫函數(shù).h" 2 3 4 //題目要求使用高效算法,但不知最高效的是哪個 5 //本解法復(fù)雜度為m+n 6 class Solution { 7 public: 8 bool searchMatrix(vector<vector<int>>& matrix, int target) { 9 if (matrix.empty() || matrix[0].empty())return false; 10 int m = matrix.size(); 11 int n = matrix[0].size(); 12 if (target< matrix[0][0] || target>matrix[m - 1][n - 1])return false; 13 for (int i = 0; i < m; ++i) 14 if (target >= matrix[i][0] && target <= matrix[i][n - 1]) { 15 for (int j = 0; j < n; ++j) 16 if (target == matrix[i][j])return true; 17 return false; 18 } 19 return false; 20 } 21 }; 22 23 //當(dāng)然這道題也可以使用一次二分查找法,如果我們按S型遍歷該二維數(shù)組, 24 //可以得到一個有序的一維數(shù)組,那么我們只需要用一次二分查找法, 25 //而關(guān)鍵就在于坐標(biāo)的轉(zhuǎn)換,如何把二維坐標(biāo)和一維坐標(biāo)轉(zhuǎn)換是關(guān)鍵點, 26 //把一個長度為n的一維數(shù)組轉(zhuǎn)化為m*n的二維數(shù)組(m*n = n)后, 27 //那么原一維數(shù)組中下標(biāo)為i的元素將出現(xiàn)在二維數(shù)組中的[i / n][i%n]的位置, 28 // 29 30 // One binary search 31 class Solution { 32 public: 33 bool searchMatrix(vector<vector<int> > &matrix, int target) { 34 if (matrix.empty() || matrix[0].empty()) return false; 35 if (target < matrix[0][0] || target > matrix.back().back()) return false; 36 int m = matrix.size(), n = matrix[0].size(); 37 int left = 0, right = m * n - 1; 38 while (left <= right) { 39 int mid = (left + right) / 2; 40 if (matrix[mid / n][mid % n] == target) return true; 41 else if (matrix[mid / n][mid % n] < target) left = mid + 1; 42 else right = mid - 1; 43 } 44 return false; 45 } 46 }; 47 48 void T074() { 49 Solution s; 50 vector<vector<int>>v; 51 v = { {1,3,5,7},{10,11,16,20},{23,30,34,50} }; 52 cout << s.searchMatrix(v, 3) << endl; 53 cout << s.searchMatrix(v, 13) << endl; 54 55 56 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/zzw1024/p/10705619.html
總結(jié)
以上是生活随笔為你收集整理的力扣算法题—074搜索二维矩阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse 拨打电话、拨号,发短信
- 下一篇: 关于expres模板引擎,Functio