zoukankan      html  css  js  c++  java
  • [leetcode] 54. 螺旋矩阵

    54. 螺旋矩阵

    模拟

    还是用老技巧,用一个dx来描述某个方向的i,j坐标变换情况。
    int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
    如果按题目中的例子来看的话,分别表示向左,下,右,上走时,i,j坐标应该如何变换

    class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            int m = matrix.length;
            List<Integer> ans = new ArrayList<>();
            if (m <= 0) {
                return ans;
            }
            int n = matrix[0].length;
    
            int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
            boolean[][] f = new boolean[m][n];
            int cur = 0;
            int i = 0, j = 0;
            while (true) {
                ans.add(matrix[i][j]);
                f[i][j] = true;
                if (i + dx[cur][0] >= m || i + dx[cur][0] < 0
                        || j + dx[cur][1] >= n || j + dx[cur][1] < 0
                        || f[i + dx[cur][0]][j + dx[cur][1]]) {
                    cur = (cur + 1) % 4;
                    if (i + dx[cur][0] >= m || i + dx[cur][0] < 0
                            || j + dx[cur][1] >= n || j + dx[cur][1] < 0
                            || f[i + dx[cur][0]][j + dx[cur][1]]) {
                        break;
                    }
                }
                i += dx[cur][0];
                j += dx[cur][1];
            }
            return ans;
        }
    }
    
  • 相关阅读:
    深拷贝浅拷贝
    mock demo
    django 2. 配置信息
    django 1. 入门基础
    java 12. 方法重载
    java 11. 设计规约
    java 10. 参数返回值问题
    java 9. 面向对象之方法设计
    java 8. 面向对象之属性
    java 7. 多维数组
  • 原文地址:https://www.cnblogs.com/acbingo/p/9357251.html
Copyright © 2011-2022 走看看