日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

剑指offer(Java实现) 顺时针打印矩阵

發布時間:2025/4/16 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer(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.

解題思路

一圈一圈地打印矩陣,按照圖中的順序的打印。

但是,要注意重復打印的問題,需要考慮兩種特殊情況

當打印下邊時,此時需要進行判斷,避免重復打印(例如:當只有矩陣只有一行元素時,此時,上邊已經打印了,下邊再打印的話會造成重復);

當打印左邊時,此時需要進行判斷,避免重復打印(例如:當只有矩陣只有一列元素時,此時,右邊已經打印了,左邊再打印的話會造成重復)。

代碼實現

import java.util.ArrayList; public class Solution {public ArrayList<Integer> printMatrix(int [][] matrix) {ArrayList<Integer> result = new ArrayList<>();if (matrix == null) {return result;}int up = 0;int down = matrix.length - 1;int right = matrix[0].length - 1;int left = 0;// 每次打印矩陣的最外層while (up <= down && right >= left) {// 上邊for (int i = left; i <= right; i++) {result.add(matrix[up][i]);}// 右邊for (int i = up + 1; i <= down; i++) {result.add(matrix[i][right]);}// 下邊,但此時需要進行判斷,避免重復打印//(例如:當只有矩陣只有一行元素時,此時,上邊已經打印了,下邊再打印的話會造成重復)if (down > up) {for (int i = right - 1; i >= left; i--) {result.add(matrix[down][i]);}}// 左邊,但此時需要進行判斷,避免重復打印//(例如:當只有矩陣只有一列元素時,此時,右邊已經打印了,左邊再打印的話會造成重復)if (right > left) {for (int i = down - 1; i > up; i--) {result.add(matrix[i][left]);}}// 進行縮圈,打印矩陣里面的元素up++;down--;right--;left++;}return result;} }

總結

以上是生活随笔為你收集整理的剑指offer(Java实现) 顺时针打印矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。