日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

力扣算法题—074搜索二维矩阵

發(fā)布時間:2025/3/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 力扣算法题—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 輸出: false


1 #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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。