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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【leetcode-74】搜索二维矩阵

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【leetcode-74】搜索二维矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(較簡單,但犯錯太多)

編寫一個高效的算法來判斷?m?x?n?矩陣中,是否存在一個目標值。該矩陣具有如下特性:

  • 每行中的整數從左到右按升序排列。
  • 每行的第一個整數大于前一行的最后一個整數。

示例?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 ms, 在Search a 2D Matrix的Java提交中擊敗了100.00% 的用戶 內存消耗 : 44.6 MB, 在Search a 2D Matrix的Java提交中擊敗了0.61% 的用戶public boolean searchMatrix(int[][] matrix, int target) {// 實際遇到其實可以遍歷放到數組中二分,這樣很簡單且題目并沒額外要求// 數組容易忽略不為空但是為[]的情況所以要判斷matrix.length != 0if (matrix == null || matrix.length == 0) {return false;}int row = matrix.length;int col = matrix[0].length;int end = row*col-1;int start = 0;while (start <= end) {int mid = (start + end)/2;int val = matrix[mid/col][mid%col]; //0-end數組下標轉矩陣下標就是這么簡潔,想復雜了if (val == target) {return true;} else if (val < target) {start = mid + 1;} else {end = mid - 1;}}return false;}

?

參考解法:比二分慢些但是邏輯簡單啊

執行用時 :?2 ms, 在Search a 2D Matrix的Java提交中擊敗了100.00%?的用戶 內存消耗 :?41.4 MB, 在Search a 2D Matrix的Java提交中擊敗了0.61%?的用戶首先選取右上角數字,如果該數字等于要查找的數字,查找過程結束;如果該數字大于要查找的數字,去掉此數字所在列;如果該數字小于要查找的數字,則去掉該數字所在行。重復上述過程直到找到要查找的數字,或者查找范圍為空。 public boolean searchMatrix(int[][] matrix, int target) {if(matrix.length == 0)return false;int row = 0, col = matrix[0].length-1;while(row < matrix.length && col >= 0){if(matrix[row][col] < target)row++;else if(matrix[row][col] > target)col--;elsereturn true;}return false;}

?

?

?

?

轉載于:https://www.cnblogs.com/twoheads/p/10646943.html

總結

以上是生活随笔為你收集整理的【leetcode-74】搜索二维矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。