力扣74. 搜索二維矩陣(二分查找)

Problem: 74. 搜索二維矩陣

文章目錄

  • 題目描述
  • 思路
  • 復雜度
  • Code

題目描述

在這里插入圖片描述在這里插入圖片描述

思路

思路1:映射為一維數組二分查找

1.由于題目矩陣中的元素整體是升序的,我們可以將其放置在一個大小為 m × n m \times n m×n的一維數組array中進行二分查找
2.對應的映射關系是array[mid] == mar[mid / n][mid % n]

思路2:直接在二維矩陣上進行二分查找

1.先對二維矩陣的第一列進行二分查找,找到小于等于target的一個數,講此行標記為rowInd
2.從rowInd開始再進行二分查找

復雜度

思路1:
時間復雜度:

O ( l o g m n ) O(logmn) O(logmn)

空間復雜度:

O ( m n ) O(mn) O(mn)

思路2:
時間復雜度:

O ( l o g m n ) O(logmn) O(logmn)

空間復雜度:

O ( 1 ) O(1) O(1)

Code

思路1:

class Solution {
public:/*** Binary Search* * @param matrix Given array* @param target Given target number* @return bool*/bool searchMatrix(vector<vector<int>> &matrix, int target) {int row = matrix.size();if (row == 0) {return false;}int col = matrix[0].size();int left = 0;int right = row * col - 1;vector<int> array(row * col);while (left <= right) {int mid = left + (right - left) / 2;if (matrix[mid / col][mid % col] == target) {return true;} else if (matrix[mid / col][mid % col] > target) {right = mid - 1;} else if (matrix[mid / col][mid % col] < target) {left = mid + 1;}}return false;}
};

思路2:

class Solution {public:/*** Binary Search** @param matrix Given array* @param target Given target number* @return bool*/bool searchMatrix(vector<vector<int>>& matrix, int target) {int row = matrix.size();if (row == 0) {return false;}int col = matrix[0].size();int left = 0;int right = row - 1;while (left <= right) {int mid = left + (right - left) / 2;if (matrix[mid][0] == target) {return true;} else if (matrix[mid][0] > target) {right = mid - 1;} else if (matrix[mid][0] < target) {left = mid + 1;}}// Check out of boundsif (right < 0) {return false;}int rowIdx = right;left = 0;right = col - 1;while (left <= right) {int mid = left + (right - left) / 2;if (matrix[rowIdx][mid] == target) {return true;} else if (matrix[rowIdx][mid] > target) {right = mid - 1;} else if (matrix[rowIdx][mid] < target) {left = mid + 1;}}return false;}};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718371.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NACOS在Windows和Linux下的安裝教程

目錄 1、Windows安裝 1.1、下載安裝包 1.2、解壓 1.3、端口配置 1.4、啟動 1.5、訪問 2、Linux安裝 2.1、安裝JDK 2.2、上傳安裝包 2.3、解壓 2.4、端口配置 2.5、啟動 3、Nacos的依賴 1、Windows安裝 開發階段采用單機安裝即可。 1.1、下載安裝包 在Nacos的Git…

Vue+SpringBoot打造圖書借閱系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 登陸注冊模塊2.2 圖書管理模塊2.3 圖書評論模塊2.4 圖書預定模塊2.5 圖書資訊模塊 三、系統設計3.1 系統結構設計3.1.1登陸注冊模塊的結構設計3.1.2圖書管理模塊的結構設計3.1.3圖書評論模塊的結構設計3.1.4圖書預定模塊…

clickhouse 隨心所欲的聚合模型-AggregatingMergeTree

clickhouse 強大的 MergeTree 系列引擎令人信服&#xff0c;其 ReplacingMergeTree、SummingMergeTree 在數據唯一性和匯總場景中表現非凡。但你是否還有保留最小(大)、平均等預聚合需求&#xff0c;甚至在一個模型中既有唯一性語意也有匯總、最小、最大、平均值語意該如何處理…

Spring-靜態代理VS動態代理/實現代理ProxyFactory

文章目錄 靜態代理VS動態代理Spring實現代理ProxyFactory 工作中遇到問題整理動態代理異常com.sun.proxy.$Proxy0 cannot be cast to 靜態代理VS動態代理 靜態代理VS動態代理 參考URL: https://blog.csdn.net/qq_25881443/article/details/103245938 【java項目實戰】代理模式…

【C語言】剖析qsort函數的實現原理

主頁&#xff1a;17_Kevin-CSDN博客 專欄&#xff1a;《C語言》 本文將從回調函數&#xff0c;qsort函數的應用&#xff0c;qsort函數的實現原理三個方面進行講解&#xff0c;請自行跳轉至相對位置進行閱讀~ 目錄 回調函數 qsort函數的應用 qsort函數實現原理 回調函數 什…

mysql主從庫Slave_SQL_Running: No問題經驗分享

最近在創建mysql主從庫的時候&#xff0c;遇到一個問題。執行 mysql> SHOW SLAVE STATUS\G結果顯示 Slave_IO_Running: Yes Slave_SQL_Running: No 很是苦惱&#xff0c;查詢了很久沒有解決 執行 mysql> SELECT * FROM performance_schema.replication_applier_status_…

獨立游戲《星塵異變》UE5 C++程序開發日志1——項目與代碼管理

寫在前面&#xff1a;本日志系列將會向大家介紹在《星塵異變》這款模擬經營游戲&#xff0c;在開發時用到的與C相關的泛用代碼與算法&#xff0c;主要記錄UE5C與原生C的用法區別&#xff0c;以及遇到的問題和解決辦法&#xff0c;因為這是我本人從ACM退役以后第一個從頭開始的項…

代碼隨想錄算法訓練營第五十天 | 買股票2

目錄 買賣股票的最佳時機III買賣股票的最佳時機IV LeetCode 123.買賣股票的最佳時機III LeetCode 123.買賣股票的最佳時機IV 買賣股票的最佳時機III 給定一個數組&#xff0c;它的第 i 個元素是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。…

牛客周賽 Round 35(A,B,C,D,E,F,G)

這場簡單&#xff0c;甚至賽時90分鐘不到就AK了。比賽鏈接&#xff0c;隊友題解友鏈 剛入住學校監獄&#xff0c;很不適應&#xff0c;最近難受的要死&#xff0c;加上最近幾場CF打的都不順利&#xff0c;san值要爆掉了&#xff0c;只能慢慢補題了。 這場C是個滑動窗口&#…

冒泡排序 和 qsort排序

目錄 冒泡排序 冒泡排序部分 輸出函數部分 主函數部分 總代碼 控制臺輸出顯示 總代碼解釋 冒泡排序優化 冒泡排序 主函數 總代碼 代碼優化解釋 qsort 排序 qsort 的介紹 使用qsort排序整型數據 使用qsort排序結構數據 冒泡排序 首先&#xff0c;我先介紹我的冒泡…

模糊搜索小案例

C#窗體實現數據錄入與模糊搜索小案例 記錄一下 主要代碼 private void button1_Click(object sender, EventArgs e){string name textBox1.Text;string hometown textBox4.Text;string school textBox6.Text;string sex textBox5.Text;string lat textBox3.Text;string …

c#打印BarTend標簽提示:具名數據源沒有cuckoo*具名數據(解決)

c#打印BarTend標簽提示&#xff1a;具名數據源沒有cuckoo*具名數據&#xff08;解決&#xff09; 今天咕咕更新打印模板的時候遇到的問題&#xff0c;就是在模版中配置了字段名&#xff0c;但是啟動c#應用&#xff0c;后端發送json數據打印的時候c#報錯提示&#xff0c;沒有在…

python 小游戲《2048》字符版非圖形界面

參考鏈接&#xff1a; 閑談2048小游戲和數組的旋轉及翻轉和轉置 目錄 2048 一、方陣類 二、隨機插入1或2 三、 合并和遞增 四、 判斷和移動 五、 鍵盤控制 完整源代碼 玩法過程 2048 上回說到2048小游戲中數組的各種旋轉、翻轉的方法&#xff0c;就是為代碼編程作準…

第十六天-爬蟲selenium庫

目錄 1.介紹 2.使用 selenium 1.安裝 2.使用 1.測試打開網頁&#xff0c;抓取雷速體育日職乙信息 2.通過xpath查找 3.輸入文本框內容 send_keys 4.點擊事件 click 5.獲取網頁源碼&#xff1a; 6.獲取cookies 7.seleniumt提供元素定位方式&#xff1a;8種 8.控制瀏覽…

Spring Security OAuth2如何自定義返回的 Token 信息

文章目錄 Spring Security OAuth2如何自定義返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint參考Spring Security OAuth2如何自定義返回的 Token 信息 Spring Boot+OAuth2,如何自定義返回的 Token 信息? 參考URL: https://www.jianshu.com/p/b7…

【Go】指針的聲明和初始化

package mainimport "fmt"func main() {// 聲明一個整數變量var num int 42// 聲明一個指向整數的指針變量&#xff0c;并將其初始化為指向整數變量的地址var ptr *int &num// 打印整數變量的值和指針變量的值&#xff08;即整數變量的地址&#xff09;fmt.Pri…

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館 時間&#xff1a;2024年9月24日-28日 地點&#xff1a;國家會展中心&#xff08;上海&#xff09; 主辦單位&#xff1a;工業和信息化部、國家發展和改革委員會、科學技術部、商務部、中國科學院、中國工程…

【游記】GDOI2024

GDOI2024游記 老年退役選手。NOIP 218 分&#xff0c;GDOI 純純旅游。 Day -5 周日返校&#xff0c;開始停課。 開始攢 rp。 Day -4 模擬賽&#xff0c;犯困&#xff0c;啥也不會。 下午打球。 Day -3 模擬賽&#xff0c;不困&#xff0c;還是啥也不會。 下午打球。 …

CSS3單獨制作移動端頁面布局方式(流式布局、flex彈性布局)

目錄 1. 流式布局(百分比布局)2. flex彈性布局(強烈推薦)2.1 介紹2.2 Flex容器常見屬性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex項目常見屬性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

銀河麒麟之Workstation安裝

一、VMware Workstation簡介 VMware Workstation是一款由VMware公司開發的虛擬化軟件&#xff0c;它允許用戶在一臺物理計算機上運行多個操作系統&#xff0c;并在每個操作系統中運行多個虛擬機。VMware Workstation提供了一個可視化的用戶界面&#xff0c;使用戶可以輕松創建、…