• 54、数组--模拟


    LCR 146. 螺旋遍历二维数组

    给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。

    螺旋遍历:从左上角开始,按照 向右向下向左向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。

    示例 1:

    输入:array = [[1,2,3],[8,9,4],[7,6,5]]
    输出:[1,2,3,4,5,6,7,8,9]
    
    1. class Solution {
    2. public int[] spiralArray(int[][] array) {
    3. if (array == null || array.length == 0 || array[0].length == 0) {
    4. return new int[0];
    5. }
    6. int rows = array.length, columns = array[0].length;
    7. int[] order = new int[rows * columns];
    8. int index = 0;
    9. int left = 0, right = columns - 1, top = 0, bottom = rows - 1;
    10. while (left <= right && top <= bottom) {
    11. for (int column = left; column <= right; column++) {
    12. order[index++] = array[top][column];
    13. }
    14. for (int row = top+1; row <= bottom; row++) {
    15. order[index++] = array[row][right];
    16. }
    17. if (left < right && top < bottom) {
    18. for (int column = right-1; column > left; column--) {
    19. order[index++] = array[bottom][column];
    20. }
    21. for (int row = bottom; row > top; row--) {
    22. order[index++] = array[row][left];
    23. }
    24. }
    25. left++;
    26. right--;
    27. top++;
    28. bottom--;
    29. }
    30. return order;
    31. }
    32. }

     

    54. 螺旋矩阵

    1. class Solution {
    2. public List spiralOrder(int[][] matrix) {
    3. List order = new ArrayList();
    4. if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
    5. return order;
    6. }
    7. int rows = matrix.length, cols = matrix[0].length;
    8. int left =0,right = cols - 1,top =0,bottom = rows -1;
    9. while(left <= right && top <= bottom){
    10. for(int col=left;col<=right;col++){
    11. order.add(matrix[top][col]);
    12. }
    13. for(int row = top+1;row<= bottom;row++){
    14. order.add(matrix[row][right]);
    15. }
    16. if(left < right && top < bottom){
    17. for(int col = right -1;col > left;col--){
    18. order.add(matrix[bottom][col]);
    19. }
    20. for(int row = bottom;row > top ;row--){
    21. order.add(matrix[row][left]);
    22. }
    23. }
    24. left++;
    25. right--;
    26. top++;
    27. bottom--;
    28. }
    29. return order;
    30. }
    31. }

  • 相关阅读:
    Spring MVC 中的数据验证技术
    【数据结构】优先级队列
    基于linux开发的实现类似unix的文件系统
    java并发编程 CyclicBarrier详解
    《痞子衡嵌入式半月刊》 第 102 期
    汽车标定的ASAM MCD-1 POD
    Unity游戏开发中ngui和ugui区别与优缺点详解
    wsl迁移至其他盘
    力扣-删除有序数组中的重复项-Java
    @Excel注解
  • 原文地址:https://blog.csdn.net/weixin_56194193/article/details/133471083