题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

直接找规律,计算下标
import java.util.*;
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        //第一次m个,第二次n-1个,第三次m-1个,第四次n-2,第五次m-2个,第六次n-3个,第七次m-3......
        //第i次和第i+4次遍历方向相同。
        ArrayList<Integer> arr = new ArrayList<>();
        int n = matrix.length;
        int m = matrix[0].length;
        int times = (n < m) ? 2 * n - 1 : 2 * m;
        for (int i = 1; i <= times; i++) {
            if (i % 4 == 1) for (int j = 0; j < m - i / 2; j++) arr.add(matrix[i / 4][i / 4 + j]);
            else if (i % 4 == 2) for (int j = 0; j < n - i / 2; j++) arr.add(matrix[j + i / 4 + 1][m - i / 4 - 1]);
            else if (i % 4 == 3) for (int j = 0; j < m - i / 2; j++) arr.add(matrix[n - 1 - i / 4][m - 2 - i / 4 - j]);
            else if (i % 4 == 0) for (int j = 0; j < n - i / 2; j++) arr.add(matrix[n - 1 - i / 4 - j][i / 4 - 1]);
        }
        return arr;
    }
}


全部评论

相关推荐

08-19 19:57
石河子大学 C++
企鹅百度字节的孝子:为啥本科只有两年啊
校招求职吐槽
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务