zoukankan      html  css  js  c++  java
  • [编程题] lk [剑指 Offer 29. 顺时针打印矩阵]

    [编程题] lk 剑指 Offer 29. 顺时针打印矩阵

    题目信息

    image-20200802233748625

    思路

    定义上下左右边界,循环打印

    注意

    如何返回一个空的数组的问题。借助stream把list转一下。

    Java代码

    import java.util.*;
    import java.util.stream.*;
    class Solution {
        public int[] spiralOrder(int[][] matrix) {
            //解决无法传入空数组的情况
            if(matrix==null || matrix.length==0)  {return new ArrayList<Integer>().stream().mapToInt(Integer::intValue).toArray();}
            //定义边界
            int left = 0;
            int right = matrix[0].length-1;
            int up = 0;
            int down = matrix.length-1;
            
            int[] res = new int[(right+1)*(down+1)];
            int index=0;
            while(true){
                //右
                for(int i=left;i<=right;i++){
                    res[index++] = matrix[up][i];
                }
                if(++up > down) break;
                
                //下
                for(int i=up;i<=down;i++){
                    res[index++] = matrix[i][right];
                }
                if(--right<left) break;
                
                //左
                for(int i=right;i>=left;i--){
                    res[index++] = matrix[down][i];
                }
                if(--down < up) {break;}
                
                //上
                for(int i=down;i>=up;i--){
                    res[index++] = matrix[i][left];
                }
                if(++left>right)  break;
            }
            
            //上边定义为数组了,把数组转为List返回(牛客的输出)
            //return (ArrayList<Integer>)Arrays.stream(res).boxed().collect(Collectors.toList());
            return res;
        }
    }
    
  • 相关阅读:
    202011.19
    202011.18
    202011.17
    202011.16
    202011.14
    jdk的下载和配置
    layui中form表单
    JS中utocomplete
    转:JqueryUI学习笔记-自动完成autocomplete
    JSON.parse()与JSON.stringify()的区别
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13423909.html
Copyright © 2011-2022 走看看