最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java螺旋矩陣處理方法詳解

 更新時(shí)間:2022年09月30日 14:56:33   作者:劉婉晴  
螺旋矩陣是指一個(gè)呈螺旋狀的矩陣,它的數(shù)字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此循環(huán)。利用java實(shí)現(xiàn)的螺旋矩陣,當(dāng)輸入N之后,會(huì)自動(dòng)打印出螺旋矩陣

題目描述:

給定一 m*n 的矩陣,請(qǐng)按照逆時(shí)針螺旋順序,返回矩陣中所有元素。

示例:

思路:

這是一道典型的模擬問題:

我們可以分析一下,遍歷前進(jìn)軌跡: 向右 - > 向下 -> 向左 -> 向上 -> 向右 …

于是,我們可以在循環(huán)中模擬這樣的前進(jìn)軌跡,記錄 右,下,上左,四個(gè)邊界,每次拐彎時(shí)更新邊界值,再進(jìn)行下一次拐彎,循環(huán)往復(fù),直至結(jié)束。結(jié)束條件為 左邊界加一大于右邊界,或者上邊界加一大于下邊界。

圖解:

代碼:

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> list = new ArrayList<Integer>();
        // 思路: 注意上下左右邊界 —— 走格子法(一直走,一直走,直到走完了,出去)
        int left = 0;
        int right = matrix[0].length - 1;
        int up = 0;
        int down = matrix.length - 1;
        if(right==-1 || down==-1){
            return list;
        }
        while(true){
            // 向右走
            for(int i=left; i<=right; i++){
                list.add(matrix[up][i]);
            }
            // 判斷是否結(jié)束
            if(up+1 > down){
                break;
            } else{
                up++; // 更新上邊界
            }
            // 向下走
            for(int i=up; i<=down; i++){
                list.add(matrix[i][right]);
            }
            // 判斷是否結(jié)束
            if(right - 1 < left){
                break;
            } else{
                right--; // 更新右邊界
            }
            // 向左走
            for(int i=right; i>=left; i--){
                list.add(matrix[down][i]);
            }
            // 判斷是否結(jié)束
            if(down-1 < up){
                break;
            } else{
                down--; // 更新下邊界
            }
            // 向上走
            for(int i=down; i>=up; i--){
                list.add(matrix[i][left]);
            }
            // 判斷是否結(jié)束
            if(left + 1 > right ){
                break;
            } else{
                left++; // 更新左邊界
            }
        }
        return list;
    }
}

變式一: 題目描述:

給你一個(gè) m 行 n 列的矩陣 matrix ,請(qǐng)按照 順時(shí)針螺旋順序 ,返回矩陣中的所有元素。

示例:

代碼:

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] ans = new int[n][n];
        int left = 0;
        int right = n - 1;
        int up = 0;
        int down = n - 1;
        int start = 1;
        while(true){
            // 向右
            for(int i=left; i<=right; i++){
                ans[up][i] = start;
                start++;
            }
            if(++ up > down){
                break;
            }
            // 向下
            for(int i=up; i<=down; i++){
                ans[i][right] = start;
                start++; 
            }
            if(-- right < left){
                break;
            }
            // 向左
            for(int i=right; i>=left; i--){
                ans[down][i] = start;
                start++;
            }
            if(-- down < up){
                break;
            }
            // 向上
            for(int i=down; i>=up; i--){
                ans[i][left] = start;
                start++;
            }
            if(++ left > right){
                break;
            }
        }
        return ans;
    }  
}

到此這篇關(guān)于Java螺旋矩陣處理方法詳解的文章就介紹到這了,更多相關(guān)Java螺旋矩陣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java位集合之BitMap、BitSet和布隆過濾器示例解析

    Java位集合之BitMap、BitSet和布隆過濾器示例解析

    這篇文章主要介紹了Java中位集合的基本概念、實(shí)現(xiàn)方法以及應(yīng)用場景,包括Bit-Map、BitSet和BloomFilter,Bit-Map通過位操作高效地存儲(chǔ)和查詢?cè)貭顟B(tài),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之健身器材商城系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之健身器材商城系統(tǒng)的實(shí)現(xiàn)

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Jdbc+Servlet+Ajax+Fileupload+mysql實(shí)現(xiàn)健身器材商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-03-03
  • Java利用反射實(shí)現(xiàn)文件的讀取操作

    Java利用反射實(shí)現(xiàn)文件的讀取操作

    這篇文章主要介紹了Java利用反射實(shí)現(xiàn)文件的讀取操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java實(shí)現(xiàn)駝峰、下劃線互轉(zhuǎn)的方法

    Java實(shí)現(xiàn)駝峰、下劃線互轉(zhuǎn)的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)駝峰、下劃線互轉(zhuǎn)的示例代碼,主要有使用 Guava 實(shí)現(xiàn)和自定義代碼轉(zhuǎn),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java String的intern用法解析

    Java String的intern用法解析

    這篇文章主要介紹了Java String的intern用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • SpringBoot自動(dòng)配置源碼深入刨析講解

    SpringBoot自動(dòng)配置源碼深入刨析講解

    這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對(duì)SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)
    2022-09-09
  • JVM中判定對(duì)象需要回收的方法

    JVM中判定對(duì)象需要回收的方法

    這篇文章主要介紹了jvm中如何判定對(duì)象需要回收,jvm在確定是否回收的對(duì)象的時(shí)候采用的是root搜索算法來實(shí)現(xiàn),需要的朋友可以參考下
    2022-04-04
  • java如何導(dǎo)出insert語句并生成sql腳本

    java如何導(dǎo)出insert語句并生成sql腳本

    這篇文章主要介紹了java導(dǎo)出insert語句并生成sql腳本的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Mybatisplus詳解如何注入自定義的SQL

    Mybatisplus詳解如何注入自定義的SQL

    mybatis-plus 提供了許多默認(rèn)單表 CRUD 語句,對(duì)于其他 SQL 情況愛莫能助。如果有一個(gè)刪庫跑路,并且需要多次調(diào)用,來清空多張表數(shù)據(jù)得需求,那么如何把他封裝在 mybatis-plus 中調(diào)用呢,下面我們一起來看一下
    2022-06-06
  • Java中OkHttp 超時(shí)設(shè)置的實(shí)現(xiàn)

    Java中OkHttp 超時(shí)設(shè)置的實(shí)現(xiàn)

    超時(shí)設(shè)置是網(wǎng)絡(luò)編程中不可忽視的一部分,本文就來介紹一下Java中OkHttp 超時(shí)設(shè)置的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06

最新評(píng)論

资兴市| 肇州县| 吉水县| 若尔盖县| 聊城市| 花莲市| 台湾省| 永年县| 固安县| 河北省| 若羌县| 志丹县| 沿河| 阿瓦提县| 瑞金市| 永嘉县| 辽阳县| 新宾| 舟曲县| 罗城| 揭东县| 通辽市| 宜川县| 玉环县| 南华县| 蒙阴县| 扎兰屯市| 翁源县| 古丈县| 浪卡子县| 汕头市| 台南市| 苍南县| 德州市| 汉寿县| 昭觉县| 泗阳县| 安吉县| 石城县| 金溪县| 铜山县|