日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/4/16 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指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实现) 顺时针打印矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

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