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;
        }
    }
    
  • 相关阅读:
    CentOS7 防火墙firewalld详细操作
    bootstrap-datetimepicker 滚动错位问题
    Contos更换python版本
    centos7.3下使用yum 安装pip
    备注
    jenkins与SVN 问题记录
    kafka配置
    Jenkins 与github配置
    nginx File not found 错误
    nginx 总结
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13423909.html
Copyright © 2011-2022 走看看