国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode 59. 螺旋矩陣 II

這篇具有很好參考價值的文章主要介紹了LeetCode 59. 螺旋矩陣 II。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目鏈接:LeetCode 59. 螺旋矩陣 II
本題不涉及算法,只是簡單的模擬,但是由于邊界條件比較多,因此容易出錯。
分析題干:題目要求按照右、下、左、上、這樣的順序對數(shù)組進行填充,填充的值為 1 ~ n*n,因此問題的關鍵就是找到待填充的位置,將其值賦值為 i 即可。
由于填充的順序是有規(guī)律的,因此可以將 右、下、左、上、這四種填充方式看作成四個方向上的移動,此時就可以發(fā)現(xiàn):

  • 當向右填充時,橫坐標不變,縱坐標 +1
  • 當向下填充時,橫坐標 +1,縱坐標不變
  • 當向左填充時,橫坐標不變,縱坐標 -1
  • 當向上填充時,橫坐標 -1,縱坐標不變
    因此對于四個方向上的橫縱坐標的變化,可以用兩個數(shù)組進行表示:
dx :=[]int{0,1,0,-1} //四種移動方向,右、下、左、上   dx表示行,dy表示列
dy :=[]int{1,0,-1,0} 

此時在移動過程中,橫縱坐標的變化,就是 a=x+dx[d]b=y+dy[d] (這里d 表示移動的方向,取值為0,1,2,3)
當發(fā)現(xiàn)需要改變移動方向時,即到達數(shù)組邊界時,采用取余的操作,更新移動方向 d=(d+1)%4
這樣,循環(huán)填充下去,直到填充到 n*n 為止。
完整代碼如下:

func generateMatrix(n int) [][]int {

    res:=make([][]int,n)
    for i,_ :=range res{
        res[i] = make([]int,n)
    }
    
    dx :=[]int{0,1,0,-1} //四種移動操作,右、下、左、上   dx表示行,dy表示列
    dy :=[]int{1,0,-1,0} 
    // i表示數(shù)值i,初始時為1, x,y表示當前位置的橫縱坐標,d表示當前移動的方向
    for i,x,y,d:=1,0,0,0;i <= n*n;i++{
        res[x][y] = i //將當前位置填上i
        a := x + dx[d]  //將當前位置按照當前的方向,更新成新的位置(a,b)即求得當前方向的下一個格子位置
        b := y + dy[d]

        if a < 0 || b < 0 || a >=n || b >= n ||res[a][b] != 0{ //如果下一個格子越界 或者 這個格子已經有數(shù)
            d=(d+1)%4   //換下一個方向
            a=x+dx[d]
            b=y+dy[d]  //得到新的格子位置
        } 
        x=a   //更新待填寫的格子的位置
        y=b
    }
    return res
}


當然你也可以分別去處理右、下、左、上 四個方向的情況,代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-434288.html

func generateMatrix(n int) [][]int {
    top, bottom := 0, n-1
    left, right := 0, n-1
    num := 1
    tar := n * n
    matrix := make([][]int, n)
    for i := 0; i < n; i++ {
        matrix[i] = make([]int, n)
    }
    for num <= tar {
        for i := left; i <= right; i++ {
            matrix[top][i] = num
            num++
        }
        top++
        for i := top; i <= bottom; i++ {
            matrix[i][right] = num
            num++
        }
        right--
        for i := right; i >= left; i-- {
            matrix[bottom][i] = num
            num++
        }
        bottom--
        for i := bottom; i >= top; i-- {
            matrix[i][left] = num
            num++
        }
        left++
    }
    return matrix
}

到了這里,關于LeetCode 59. 螺旋矩陣 II的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【LeetCode-中等題】59. 螺旋矩陣 II

    【LeetCode-中等題】59. 螺旋矩陣 II

    定義四個邊界條件,每轉一圈,把數(shù)值填進去,然后縮小一圈,直到不滿足條件位置 結束循環(huán)條件可以是: 兩種結束條件都可以,但是一定要注意每次處理一條邊界的范圍 不能重復賦值

    2024年02月09日
    瀏覽(19)
  • 算法leetcode|59. 螺旋矩陣 II(rust重拳出擊)

    算法leetcode|59. 螺旋矩陣 II(rust重拳出擊)

    給你一個正整數(shù) n ,生成一個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 1 = n = 20 面對這道算法題目,二當家的再次陷入了沉思。 可以每次循環(huán)移動一步,判斷移到邊界就變換方向,巧用數(shù)組可以減少邏輯判斷的復雜性。 也可以每次循環(huán)

    2024年02月11日
    瀏覽(23)
  • 【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59

    【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59

    歡迎來到小K的Leetcode|代碼隨想錄|專題化專欄,今天將為大家?guī)砺菪仃嚨姆窒?? 給你一個正整數(shù) n ,生成一個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1: 示例 2: 提示: 思路: 本類型題目其實都不涉及什么算法,就是模擬

    2024年02月16日
    瀏覽(23)
  • 【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59-54

    【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59-54

    歡迎來到小K的Leetcode|代碼隨想錄|專題化專欄,今天將為大家?guī)砺菪仃嚨姆窒?? 給你一個正整數(shù) n ,生成一個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1: 示例 2: 提示: 思路: 本類型題目其實都不涉及什么算法,就是模擬

    2024年02月16日
    瀏覽(25)
  • Leetcode 977-有序數(shù)組的平方 | LeetCode209-長度最小的子數(shù)組 | Leetcode59-螺旋矩陣

    給你一個按 非遞減順序 排序的整數(shù)數(shù)組 nums,返回 每個數(shù)字的平方 組成的新數(shù)組,要求也按 非遞減順序 排序。 思考: 這個數(shù)組為有序數(shù)組,那么即使前面有負的,數(shù)組平方的最大值只能是在數(shù)組的倆端,不是在左邊就是右邊,不可能是在中間 由此想到雙指針做法,left從

    2024年02月16日
    瀏覽(30)
  • LeetCode977.有序數(shù)組的平方 ,209.長度最小的子數(shù)組 ,59.螺旋矩陣II

    LeetCode977.有序數(shù)組的平方 思路: ? ? ? ? 雙指針應用 ? ? ? ? 因為數(shù)組是有序的,數(shù)組中可能存在負數(shù),所以其平方的最大值只可能是數(shù)組的頭或尾,因此可以定義兩個指針,i指向頭,j指向尾。同時定義一個新數(shù)組result,讓k指向新數(shù)組的最后一個元素,當nums[i] * nums[i]

    2023年04月21日
    瀏覽(24)
  • Day2:(1)有序數(shù)組的平方(2)長度最小的子數(shù)(3)Leetcode 59螺旋矩陣II

    (1)解析 Leetcode977 參考文章 參考視頻 (2)思路 一開始考慮不采用新建一個新數(shù)組,在原數(shù)組上實現(xiàn)有序數(shù)組平方的排序,實現(xiàn)起來比較繁瑣,細節(jié)會有些小錯,后來采用新建數(shù)組的方式: 定義一個新數(shù)組resVec,和A數(shù)組一樣的大??;讓index指向resVec數(shù)組當前可插入元素的位

    2023年04月08日
    瀏覽(33)
  • LeetCode-Day2-977.有序數(shù)組的平方 ,209.長度最小的子數(shù)組 ,59.螺旋矩陣II ,

    LeetCode-Day2-977.有序數(shù)組的平方 ,209.長度最小的子數(shù)組 ,59.螺旋矩陣II ,

    雙指針法,原來數(shù)組是有序的,說明平房之后最左和最右兩邊的平方和是最大的,比較最大的插入新的vector數(shù)組,然后移動指針選下一個元素進行比較。 接下來就開始介紹數(shù)組操作中另一個重要的方法: 滑動窗口 。 所謂滑動窗口, 就是不斷的調節(jié)子序列的起始位置和終止

    2024年02月16日
    瀏覽(21)
  • 看完這篇文章你就徹底懂啦{保姆級講解}-----(LeetCode刷題59螺旋矩陣II) 2023.4.20

    看完這篇文章你就徹底懂啦{保姆級講解}-----(LeetCode刷題59螺旋矩陣II) 2023.4.20

    本文章一部分內容參考于《代碼隨想錄》----如有侵權請聯(lián)系作者刪除即可,撰寫本文章主要目的在于記錄自己學習體會并分享給大家,全篇并不僅僅是復制粘貼,更多的是加入了自己的思考,希望讀完此篇文章能真正幫助到您!??! 力扣題目鏈接 分析題目: 元素按照 順時

    2024年02月05日
    瀏覽(25)
  • 力扣59-螺旋矩陣

    題目鏈接

    2024年01月20日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包