• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 順時針打印矩陣(Java)

    標簽: 劍指Offer刷題(Java)  java  算法  python  leetcode  數據結構

    順時針打印矩陣(Java)

    題目:
    輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。
    代碼:
    在這里插入圖片描述
    代碼:

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printMatrix(int [][] matrix) {
           if(matrix==null)
               return null;
            
            int columns=matrix[0].length;
            int rows=matrix.length;
            
            int start=0;
            ArrayList<Integer> list=new ArrayList<Integer>();
            
            while(columns>start*2&&rows>start*2){
                //表示最后一列
                int endX=columns-1-start;
                //表示最后一行
                int endY=rows-1-start;
                
                //從左到右輸出一行
                for(int i=start; i<=endX; i++){
                    int number=matrix[start][i];
                    list.add(number);
                }
                
                //從上到下輸出一列
                if(endY>start){
                    for(int i=start+1;i<=endY;i++){
                        int number=matrix[i][endX];
                        list.add(number);
                    }
                }
                
                //從右到左輸出一行
                if(endX>start&&endY>start){
                    for(int i=endX-1;i>=start;i--){
                        int number=matrix[endY][i];
                        list.add(number);
                    }
                }
                
                //從下到上輸出一列
                if(endY-start>=2&&endX>start){
                    for(int i=endY-1;i>start;i--){
                        int number=matrix[i][start];
                        list.add(number);
                    }
                }
                
                start++;
            }
            return list;
        }
    }
    
    版權聲明:本文為sinat_40968110原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/sinat_40968110/article/details/105305867

    智能推薦

    順時針打印矩陣

    一、前言 《劍指Offer》中題29   二、題目 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。例如,如果輸入如下矩陣:      1      2      3      4      5    &n...

    順時針打印矩陣

    題目描述:輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5] 示例 2: 輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出:[1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 <=...

    順時針打印矩陣

    題目 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。 解答 方案一:模擬打印矩陣的路徑。初始位置是矩陣的左上角,初始方向是向右,當路徑超出界限或者進入之前訪問過的位置時,則順時針旋轉,進入下一個方向。 判斷路徑是否進入之前訪問過的位置需要使用一個與輸入矩陣大小相同的輔助矩陣 visited\textit{visited}visited,其中的每個元素表示該位置是否被訪問過。當一個元...

    順時針打印矩陣

    前言 最近在刷劍指offer,碰到一道題如下: 劍指offer里的解法比較難懂,但看了牛客網有人對這題的解法我覺得很棒,特此在這里分享一下。 基本思想 定義四個變量分別對應左上,右上,左下,右下,根據這四個變量順時針打印一圈,接著四個變量分別向對角縮進一個單位,繼續打印,依次循環。如下圖所示。 代碼與測試 輸出如下:...

    猜你喜歡

    順時針打印矩陣

    順指針打印矩陣 給出一個二維的矩陣數組,順時針螺旋遍歷矩陣的所有的數據元素。 思路 屬于細節題,考慮按圈打印,每次打印外圍一圈,即上行、右行、下行、左行。特殊情況考慮:當只有一行的時候,當只有一列的時候的特殊處理。print子函數功能為每次打印一圈,傳入的關鍵參數為當前圈的左上角和右下角的坐標。 代碼實現...

    順時針打印矩陣

    游戲也能開拓思路 題面 輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路分析 常規解法: 每輪打印一圈外圍 內層分方向上,右,下,左 外層控制循環次數,但易越界 魔方逆時旋...

    順時針打印矩陣

    劍指offer——輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字。 例如,輸入如下矩陣: 則依次打印出數字:1  2  3  4  8  12  16  15  14  13  9  5  6  7  11  1...

    使用Adaboost訓練車牌定位——(2)

    簡介 在上一篇文章中,我介紹了《使用Adaboost訓練車牌定位》的前兩個步驟: 1.準備訓練樣本圖片,包括正例及反例樣本 2.生成樣本描述文件 3.訓練樣本 4.目標識別 ================= 今天第3步:基于haar特征的adaboost級聯分類器的訓練。若將本步驟看做一個系統,則輸入為正樣本的描述文件(.vec)以及負樣本的說明文件(.dat);輸出為分類器配置參數文件(.xm...

    springcloud學習---Eureka高可用實現_02

    繼上一篇搭建注冊中心之后,本篇實現Eureka高可用,即實現Eureka集群: 修改Eureka的配置文件,或者再新建一個Eureka項目,本篇修改配置文件,具體詳解請看代碼片段: 修改C:\Windows\System32\drivers\etc\hosts文件,在最后追加如下信息: 修改完成后通過maven打包,啟動的時候要注意,按照如下方式啟動則表示啟動了兩個Eureka項目,出現紅色框表示...

    精品国产乱码久久久久久蜜桃不卡