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

Java螺旋矩陣處理方法詳解

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

題目描述:

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

示例:

思路:

這是一道典型的模擬問(wèn)題:

我們可以分析一下,遍歷前進(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和布隆過(guò)濾器示例解析

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

    這篇文章主要介紹了Java中位集合的基本概念、實(shí)現(xiàn)方法以及應(yīng)用場(chǎng)景,包括Bit-Map、BitSet和BloomFilter,Bit-Map通過(guò)位操作高效地存儲(chǔ)和查詢?cè)貭顟B(tài),文中通過(guò)代碼介紹的非常詳細(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é)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Jdbc+Servlet+Ajax+Fileupload+mysql實(shí)現(xiàn)健身器材商城系統(tǒng),大家可以在過(guò)程中查缺補(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用法解析,文中通過(guò)示例代碼介紹的非常詳細(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ì)的介紹。如果可以的話,能不能畫(huà)一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類(lèi),以及哪些關(guān)鍵點(diǎn)
    2022-09-09
  • JVM中判定對(duì)象需要回收的方法

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

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

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

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

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

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

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

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

最新評(píng)論

凤山市| 忻州市| 雷州市| 新安县| 治县。| 龙山县| 昌平区| 闽清县| 治县。| 巴彦淖尔市| 和龙市| 德惠市| 濉溪县| 温州市| 喀喇沁旗| 拉孜县| 炉霍县| 延津县| 抚松县| 宜兰县| 光山县| 额敏县| 光山县| 中山市| 外汇| 江北区| 昌黎县| 伊金霍洛旗| 扶沟县| 巴青县| 安平县| 东安县| 会理县| 昌宁县| 保定市| 芮城县| 巴林左旗| 常山县| 茂名市| 卓资县| 贵南县|