LeetCode Hot100 算法題 (矩陣篇)

1、73. 矩陣置零

給定一個?m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法

    示例 1:

    輸入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
    輸出:[[1,0,1],[0,0,0],[1,0,1]]
    
    // 將第一行第一列作為標記位
    class Solution {public void setZeroes(int[][] matrix) {int m = matrix.length,n = matrix[0].length;boolean mflag = false,nflag = false;// 記錄標記位是否出現過0,因為此時不記錄,后面若是被覆蓋就不準了for(int i = 0;i < m;i++) {if(matrix[i][0] == 0) {mflag = true;break;}}for(int i = 0;i < n;i++) {if(matrix[0][i] == 0) {nflag = true;break;}}// 讓標記位變零for(int i = 1;i < m;i++) {for(int j = 1;j < n;j++) {if(matrix[i][j] == 0) {// 將該元素所在行列的標記位設為零matrix[i][0] = matrix[0][j] = 0;}}}// 根據已修改過的標記位修改矩陣for(int i = 1;i < m;i++) {for(int j = 1;j < n;j++) {// 根據標記位,將對應行列除標記位外全部涂為0if(matrix[i][0] == 0 || matrix[0][j] == 0) {matrix[i][j] = 0;}}}// 根據之前記錄的標記位進行涂改if(mflag) {for(int i = 0;i < m;i++) {matrix[i][0] = 0;}}if(nflag) {for(int i = 0;i < n;i++) {matrix[0][i] = 0;}}}
    }

    ?2、54. 螺旋矩陣

    給你一個 mn 列的矩陣?matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。

    示例 1:

    輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
    輸出:[1,2,3,6,9,8,7,4,5]
    
    // 一道考驗邊界判斷的題
    class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> ans = new ArrayList<>();if (matrix == null || matrix.length == 0) return ans;int top = 0, bottom = matrix.length - 1;int left = 0, right = matrix[0].length - 1;while (top <= bottom && left <= right) {// 1. 左上 → 右上for (int i = left; i <= right; i++) {ans.add(matrix[top][i]);}top++;// 2. 右上 → 右下for (int i = top; i <= bottom; i++) {ans.add(matrix[i][right]);}right--;// 檢測是否還有空間放下新的元素// 3. 右下 → 左下 (需要檢查是否還有行)if (top <= bottom) {for (int i = right; i >= left; i--) {ans.add(matrix[bottom][i]);}bottom--;}// 4. 左下 → 左上 (需要檢查是否還有列)if (left <= right) {for (int i = bottom; i >= top; i--) {ans.add(matrix[i][left]);}left++;}}return ans;}
    }

    3、48. 旋轉圖像

    給定一個 n?×?n 的二維矩陣?matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。

    你必須在?原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。

    示例 1:

    輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
    輸出:[[7,4,1],[8,5,2],[9,6,3]]
    
    // 數學是很重要的工具 多看一些數學推論即可,也不需要多么深耕
    class Solution {public void rotate(int[][] matrix) {int n = matrix.length;// 水平翻轉for (int i = 0; i < n / 2; ++i) {for (int j = 0; j < n; ++j) {int temp = matrix[i][j];matrix[i][j] = matrix[n - i - 1][j];matrix[n - i - 1][j] = temp;}}// 主對角線翻轉for (int i = 0; i < n; ++i) {for (int j = 0; j < i; ++j) {int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}}
    }

    4、240. 搜索二維矩陣 II

    編寫一個高效的算法來搜索?m?x?n?矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性:

    • 每行的元素從左到右升序排列。
    • 每列的元素從上到下升序排列。

    示例 1:

    輸入: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
    
    // 貪心算法的用處之一
    class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length, n = matrix[0].length;int x = 0, y = n - 1;while (x < m && y >= 0) {if (matrix[x][y] == target) {return true;}if (matrix[x][y] > target) {--y;} else {++x;}}return false;}
    }

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

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

    相關文章

    Flutter基礎(項目創建)

    一、使用命令行創建項目 1. 確認 Flutter 環境正常 要保證 Flutter SDK 已經正確安裝&#xff0c;并且環境變量配置無誤。可以通過執行以下命令來驗證&#xff1a; flutter doctor 要保證所有檢查項都顯示綠色對勾&#xff0c;要是有問題&#xff0c;可按照提示進行修復。 …

    【Actix Web】Rust Web開發實戰:Actix Web框架全面指南(2025企業級應用版)

    ? 在2025年高并發、低延遲成為Web服務核心指標的背景下&#xff0c;??Actix Web憑借異步Actor模型與零成本抽象??&#xff0c;成為Rust生態中生產環境部署率最高的Web框架。本指南深入解析Actix Web 4.0核心技術&#xff0c;覆蓋??百萬級并發架構設計??、??內存安全…

    HTML之常用基礎標簽

    HTML之常用基礎標簽 一、HTML文檔基本結構標簽1. <html>標簽2. <head>標簽3. <body>標簽 二、文本相關基礎標簽1. 標題標簽&#xff08;<h1> - <h6>&#xff09;2. 段落標簽&#xff08;<p>&#xff09;3. 換行標簽&#xff08;<br>…

    外鍵列索引優化:加速JOIN查詢的關鍵

    在使用數據庫時&#xff0c;特別是在執行涉及JOIN操作的查詢時&#xff0c;優化外鍵列的索引是非常重要的。外鍵通常用于建立表之間的關聯&#xff0c;而JOIN操作則是基于這些外鍵列來實現的。下面是一些關鍵步驟和技巧&#xff0c;可以幫助你優化外鍵列的索引&#xff0c;從而…

    2025年 UI 自動化框架使用排行

    ??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】 </

    【軟考高項論文】論信息系統項目的整體管理

    摘要 在信息系統項目的管理中&#xff0c;整體管理處于核心地位&#xff0c;對項目全局規劃與協調起著關鍵作用&#xff0c;保障項目各階段目標一致且高效執行。本文結合作者參與的 2024 年 6 月啟動的信息系統項目&#xff0c;深入探討項目整體管理的過程&#xff0c;著重闡述…

    (4)Wireshark捕獲設置

    1.簡介 WireShark的強大之處就在于不用你再做任何配置就可以抓取http或者https的包。主要是講解和分享如何使用WireShark抓包。 2.運行Wireshark 安裝好 Wireshark 以后&#xff0c;就可以運行它來捕獲數據包了。方法如下&#xff1a; 1.在 Windows 的“開始”菜單中&#…

    智慧校園電子班牌系統源碼的開發與應用,基于Java/SpringBoot后端、Vue2前端、MySQL5.7數據庫

    智慧校園系統源碼&#xff0c;智慧班牌源碼&#xff0c;java語言 技術棧&#xff1a; ?后端開發?&#xff1a;采用Java語言和Spring Boot框架進行開發。Java是一種廣泛使用的、面向對象的編程語言&#xff0c;而Spring Boot是基于Spring框架的快速應用開發框架&#xff0c;能…

    工程優化——WebSocket、WSS(WebSocket Secure)和SSE(Server-Sent Events)通信對比

    WebSocket、WSS&#xff08;WebSocket Secure&#xff09;和SSE&#xff08;Server-Sent Events&#xff09;是三種常見的實時通信技術&#xff0c;它們的核心區別在于通信方向、協議實現、數據格式和適用場景。以下是分維度的詳細解釋&#xff0c;并附帶Python示例和應用場景選…

    【TiDB 社區智慧合集】 TiDB x 運營商|掌上營業廳、賬務、物聯網等多核心業務場景的實戰應用案例

    作者&#xff1a; Billmay表妹 原文來源&#xff1a; https://tidb.net/blog/bb1467af 在信息基礎設施國產化戰略加速落地的背景下&#xff0c;電信及廣電領域正迎來數據庫國產化替代的關鍵轉型期。TiDB 憑借自身技術創新優勢&#xff0c;深度攜手各大運營商&#xff0c;以全…

    Java 17 下 Spring Boot 與 Pulsar 隊列集成實戰:生產者與消費者實現指南

    Pulsar隊列與Springboot集成有2種模式&#xff1a;官方pulsar-client 或社區Starter&#xff08;如pulsar-spring-boot-starter&#xff09; 如果考慮最新、最快、最齊全的功能&#xff0c;使用官方pulsar-client如果考慮快速低成本接入&#xff0c;使用社區Starter&#xff0…

    《Go語言高級編程》RPC 入門

    《Go語言高級編程》RPC 入門 一、什么是 RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff0c;遠程過程調用&#xff09;是分布式系統中不同節點間的通信方式&#xff0c;允許程序像調用本地函數一樣調用遠程服務的方法。 Go 語言的標準庫 net/rpc 提供了基礎的…

    第N5周:Pytorch文本分類入門

    &#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客 &#x1f356; 原作者&#xff1a;K同學啊 一、前期準備 1.加載數據 import torch import torch.nn as nn import torchvision from torchvision import transforms,datasets import os,PIL,p…

    uniappx 安卓app項目本地打包運行,騰訊地圖報錯:‘鑒權失敗,請檢查你的key‘

    根目錄下添加 AndroidManifest.xml 文件&#xff0c; <application><meta-data android:name"TencentMapSDK" android:value"騰訊地圖申請的key" /> </application> manifest.json 文件中添加&#xff1a; "app": {"…

    【向上教育】結構化面試開口秘籍.pdf

    向 上 教 育 XI A N G S H A N G E D U C A T I O N 結構化 面試 開口秘笈 目 錄 第一章 自我認知類 ........................................................................................................................... 2 第二章 工作關系處理類 .......…

    Webpack 熱更新(HMR)原理詳解

    &#x1f525; Webpack 熱更新&#xff08;HMR&#xff09;原理詳解 &#x1f4cc; 本文適用于 Vue、React 等使用 Webpack 的項目開發者&#xff0c;適配 Vue CLI / 自定義 Webpack 項目。 &#x1f3af; 一、什么是 HMR&#xff1f; Hot Module Replacement 是 Webpack 提供的…

    MySQL索引完全指南

    一、索引是什么&#xff1f;為什么這么重要&#xff1f; 索引就像字典的目錄 想象一下&#xff0c;你要在一本1000頁的字典里找"程序員"這個詞&#xff0c;你會怎么做&#xff1f; 沒有目錄&#xff1a;從第1頁開始一頁一頁翻&#xff0c;可能要翻500頁才能找到有…

    學習使用dotnet-dump工具分析.net內存轉儲文件(2)

    運行ShenNiusModularity項目&#xff0c;使用createdump工具dump完整的進程內存映射文件&#xff0c;然后運行dotnet-dump analyze命令加載dump文件。 ??可以先使用dumpheap命令顯示有關垃圾回收堆的信息和有關對象的收集統計信息。dumpheap支持多類參數&#xff08;如下所示…

    Oracle BIEE 交互示例(一)同一分析內

    Oracle BIEE 交互示例(一)同一分析內 1 示例背景2 實踐目標3 實操步驟3.1 創建數據集3.1.1 TEST_TABLE3.1.2 保存名字為【01 TEST_TABLE】3.2 創建分析3.2.1 創建列3.2.2 創建視圖3.2.2.1 數據透視表3.2.2.2 圖形3.2.2.3 表3.3 設置交互4 結果示例1 示例背景 版本:OBIEE 12…

    使用API有效率地管理Dynadot域名,出售賬戶中的域名

    關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…