05算法學習_59. 螺旋矩陣 II

05算法學習_59. 螺旋矩陣 II

  • 05算法學習_59. 螺旋矩陣 II
    • 題目描述:
    • 個人代碼:
    • 學習思路:
      • 第一種寫法:
        • 題解關鍵點:
      • 個人學習時疑惑點解答:

05算法學習_59. 螺旋矩陣 II

力扣題目鏈接: 59. 螺旋矩陣 II

題目描述:

59. 螺旋矩陣 II
已解答
中等
相關標簽
相關企業
給你一個正整數 n ,生成一個包含 1 到 n2 所有元素
,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。輸入:n = 3
輸出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:輸入:n = 1
輸出:[[1]]

在這里插入圖片描述

個人代碼:

暴力解法

class Solution {public int[][] generateMatrix(int n) {int startx=0;int starty=0;int[][] nums = new int[n][n];int offet=1;int i ,j;int loop=1;int count =1;while(loop<=n/2){for(j=starty;j<n-offet;j++){nums[startx][j]=count++;}for(i=startx;i<n-offet;i++){nums[i][j]=count++;}for(;j>starty;j--){nums[i][j]=count++;}for(;i>startx;i--){nums[i][j]=count++;}startx++;starty++;offet++;loop++;}if (n % 2 == 1) { // n 為奇數時,單獨處理矩陣中心的值nums[startx][starty] = count;}return nums;}
}

學習思路:

本題并不涉及到什么算法,就是模擬過程,但卻十分考察對代碼的掌控能力。

第一種寫法:

題解關鍵點:

堅持循環不變量原則,左閉右開
在這里插入圖片描述

代碼參考:

class Solution {public int[][] generateMatrix(int n) {int[][] nums = new int[n][n];int startX = 0, startY = 0;  // 每一圈的起始點int offset = 1;int count = 1;  // 矩陣中需要填寫的數字int loop = 1; // 記錄當前的圈數int i, j; // j 代表列, i 代表行;while (loop <= n / 2) {// 頂部// 左閉右開,所以判斷循環結束時, j 不能等于 n - offsetfor (j = startY; j < n - offset; j++) {nums[startX][j] = count++;}// 右列// 左閉右開,所以判斷循環結束時, i 不能等于 n - offsetfor (i = startX; i < n - offset; i++) {nums[i][j] = count++;}// 底部// 左閉右開,所以判斷循環結束時, j != startYfor (; j > startY; j--) {nums[i][j] = count++;}// 左列// 左閉右開,所以判斷循環結束時, i != startXfor (; i > startX; i--) {nums[i][j] = count++;}startX++;startY++;offset++;loop++;}if (n % 2 == 1) { // n 為奇數時,單獨處理矩陣中心的值nums[startX][startY] = count;}return nums;}
}

個人學習時疑惑點解答:


注意點:該題變量定義多,要從問題出發理解各個變量的作用,不要死記硬背
模擬過程的時候可以先不考慮為奇數時中間單獨的元素,僅思考完整的n圈

注:該專欄算法參考 : “代碼隨想錄”(程序員卡爾)進行學習。

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

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

相關文章

JDK7Hashmap的頭插法造成的環問題

單線程下的擴容 多線程下的擴容 next&#xff1d;e 然后e的next變成e

JAVA|后端編碼規范

目錄 零、引言 一、基礎 二、集合 三、并發 四、日志 五、安全 零、引言 規范等級&#xff1a; 【強制】&#xff1a;強制遵守&#xff0c;來源于線上歷史故障&#xff0c;將通過工具進行檢查。【推薦】&#xff1a;推薦遵守&#xff0c;來源于日常代碼審查、開發人員反饋…

2025-05-21 Python深度學習5——數據讀取

文章目錄 1 數據準備2 Dataset2.1 自定義 Dataset2.2 使用示例 3 TensorBoard3.1 安裝3.2 標量可視化&#xff08;Scalars&#xff09;3.3 圖像可視化&#xff08;Images&#xff09;3.4 其他常用功能 4 transform4.1 ToTensor()4.2 Normalize()4.3 Resize()4.4 Compose()4.5 C…

5月21日學習筆記

MYSQL三層結構 表1 數據庫DB1 表2 數據庫管理系統 客戶端命令終端&#xff08;Dos&#xff09; DBMS 數據庫DB2 表1 表2 數據庫………. Mysql數據庫-表的本質仍然是文件 表的一行稱之為一條記錄->在java程序中一行記錄往往使用對象表示 SQL語…

二十、面向對象底層邏輯-ServiceRegistry接口設計集成注冊中心

一、服務治理的基石接口 在微服務架構中&#xff0c;服務實例的動態注冊與發現是保證系統彈性的關鍵機制。Spring Cloud Commons模塊通過ServiceRegistry與Registration接口定義了服務注冊的標準化模型&#xff0c;為不同服務發現組件&#xff08;Eureka、Consul、Nacos等&…

DeepSeek:以開源之力,引領AI技術新風潮

在年春節&#xff0c;大語言模型DeepSeek如同一枚震撼彈&#xff0c;在全球范圍內引發了轟動&#xff0c;成功“破圈”&#xff0c;將中國的人工智能&#xff08;AI&#xff09;技術成果推向了世界舞臺。 開源策略&#xff1a;打破技術壁壘 在AI行業&#xff0c;OpenAI等巨頭…

完整改進RIME算法,基于修正多項式微分學習算子Rime-ice增長優化器,完整MATLAB代碼獲取

1 簡介 為了有效地利用霧狀冰生長的物理現象&#xff0c;最近開發了一種優化算法——霧狀優化算法&#xff08;RIME&#xff09;。它模擬硬霧狀和軟霧狀過程&#xff0c;構建硬霧狀穿刺和軟霧狀搜索機制。在本研究中&#xff0c;引入了一種增強版本&#xff0c;稱為修改的RIME…

PyTorch可視化工具——使用Visdom進行深度學習可視化

文章目錄 前置環境Visdom安裝并啟動VisdomVisdom圖形APIVisdom靜態更新API詳解通用參數說明使用示例Visdom動態更新API詳解1. 使用updateappend參數2. ~~使用vis.updateTrace方法~~3. 完整訓練監控示例 Visdom可視化操作散點圖plot.scatter()散點圖案例線性圖vis.line()vis.lin…

Java使用Collections集合工具類

1、Collections 集合工具類 Java 中的 Collections 是一個非常有用的工具類&#xff0c;它提供了許多靜態方法來操作或返回集合。這個類位于 java.util 包中&#xff0c;主要包含對集合進行操作的方法&#xff0c;比如排序、搜索、線程安全化等。 Java集合工具類的使用&#x…

Unity基礎學習(五)Mono中的重要內容(1)延時函數

目錄 一、Mono中的延時函數Invoke 1. Invoke作用&#xff1a;延遲指定時間后執行一次函數。API&#xff1a; 2. InvokeRepeating作用&#xff1a;延遲后開始重復執行函數。API&#xff1a; 3. CancelInvoke作用&#xff1a;停止所有延時函數&#xff0c;或停止指定函數的延時…

180KHz 60V 5A開關電流升壓/升降壓型DC-DC轉換器XL4019升降壓芯片

介紹 XL6019是一款專為升壓、升降壓設計的 單片集成電路&#xff08;升壓和降壓是由外圍電路拓撲確定的&#xff09;&#xff0c;可工作在DC5V到40V輸入電 壓范圍&#xff0c;低紋波&#xff0c;內置功率MOS。XL6019內 置固定頻率振蕩器與頻率補償電路&#xff0c;簡化了電 路…

如何暢通需求收集渠道,獲取用戶反饋?

要暢通需求收集渠道、有效獲取用戶反饋&#xff0c;核心在于多樣化反饋入口、閉環反饋機制、用戶分層管理、反饋數據結構化分析等四個方面。其中&#xff0c;多樣化反饋入口至關重要&#xff0c;不同用戶有不同的溝通偏好&#xff0c;只有覆蓋多個反饋路徑&#xff0c;才能捕捉…

Python結合ollama和stramlit開發聊天機器人

Python結合ollama和stramlit開發聊天機器人 一、環境準備1、streamlit安裝2、langchain安裝3、ollama的安裝 二、Ollama平臺聊天機器人實現1、需求2、模型調用3、前端實現頁面呈現代碼實現 三、詳細代碼地址四、參考資源 一、環境準備 1、streamlit安裝 # 通過 pip 安裝 pip …

java jdbc執行Oracle sql文件

執行代碼 import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.DriverManager;import org.apache.ibatis.jdbc.ScriptRunner;public class ExecSqlFileController {pu…

[Java實戰]Spring Boot整合MinIO:分布式文件存儲與管理實戰(三十)

[Java實戰]Spring Boot整合MinIO&#xff1a;分布式文件存儲與管理實戰&#xff08;三十&#xff09; 一、MinIO簡介與核心原理 MinIO 是一款高性能、開源的分布式對象存儲系統&#xff0c;兼容 Amazon S3 API&#xff0c;適用于存儲圖片、視頻、日志等非結構化數據。其核心特…

開發指南115-CSS中選擇器關系

1、選擇后代 可以用選擇器1 選擇器2&#xff08;中間用空格分隔&#xff09;來表達&#xff0c;也可以在大括號里通過包含關系來表達 舉例 .a .b 舉例.a { .b{} } 注意css本身并不支持嵌套的寫法&#xff0c;是scss等提供的擴展能力。 2、選擇直系后代 選擇器1 > 選擇器2&a…

創建型:抽象工廠模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 1、核心思想 目的&#xff1a;統一管理相關對象的創建&#xff0c;確保產品兼容性。優先用于需要強約束產品兼容性的場景&#xff08;如UI主題、跨平臺適配&#xff09; 概念&#…

乘最多水的容器 | 算法 | 給定一個整數數組。有n條垂線。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。

在我們日常生活中&#xff0c;蓄水似乎是一個極為樸素的物理行為&#xff1a;兩堵墻之間&#xff0c;注入水&#xff0c;看誰能裝得更多。可如果換個角度&#xff0c;從算法的視角去看這個問題&#xff0c;它會變得怎樣&#xff1f;你是否意識到&#xff0c;這樣一個簡單的問題…

無人機避障——深藍學院浙大Ego-Planner規劃部分

ESDF-free&#xff1a; 被這種類型的障礙物死死卡住的情況&#xff1a; 在一定范圍內建立ESDF&#xff1a; Ego-Planner框架&#xff1a; 找到{p,v} pair&#xff1a; 【注意】&#xff1a;首先根據在障礙物內航跡上的點Q&#xff0c;以及與它相鄰但不在障礙物內的兩個點&#…

零基礎設計模式——大綱匯總

零基礎學設計模式 - 大綱 前言 本教程旨在幫助零基礎的同學快速入門設計模式&#xff0c;理解其核心思想和應用場景。我們將通過清晰的講解和簡單的示例&#xff0c;逐步引導你掌握常用的設計模式。 第一部分&#xff1a;設計模式入門 什么是設計模式&#xff1f; 設計模式…