「剣指オファー」印刷マトリックス時計回り(Java)

タイトルの説明

マトリックスを入力し、各番号を外側から内側に時計回りに順番に印刷します。たとえば、次の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の数字。

ACコード

この質問は、以前に行ったインタビューの質問と非常によく似ています。当時、私は剣をスワイプして提示するときに非常に面倒な方法を使用していました。今では簡単にしています。
印刷の順序は、左から右、上から下です。右から左、下から上、ただしこの質問の要点に注意してください。1行または1列のみの場合を考慮してください。

import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
       int rows=matrix.length,cols=matrix[0].length;
        if(rows==0||cols==0)
            return null;
       ArrayList<Integer> res=new ArrayList<>();
       int top=0,bottom=rows-1,left=0,right=cols-1;
       while(left<=right&&top<=bottom){
           for(int i=left;i<=right;i++) {res.add(matrix[top][i]);}
           top++;
           for(int i=top;i<=bottom;i++) {res.add(matrix[i][right]);}
           right--;
           //加判断是为了判别只有一行或者一列的情况。
           if(top<=bottom)
               for(int i=right;i>=left;i--) {res.add(matrix[bottom][i]);}
           bottom--;
           if(left<=right)
               for(int i=bottom;i>=top;i--) {res.add(matrix[i][left]);}
           left++;
       }
       return res;
    }
}
201件のオリジナル記事を公開 Like9 訪問者10,000以上

おすすめ

転載: blog.csdn.net/weixin_40992982/article/details/105044617