顺时针从外向里打印一个矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 这道题我是根据左上角坐标与右下角坐标的变化实现对矩阵的输出的 (0,0) 1 (0,1) 2 (0,2) 3 (0,3) ... 阅读详情

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        ArrayList<Integer> result=new ArrayList<Integer>();
        if(matrix.length==0||matrix[0].length==0)
            return result;
        int rows=matrix.length;//行数
        int cols=matrix[0].length;//列数
        /*
        if(rows==1){
            for(int p=0;p<cols;p++){
                result.add(matrix[0][p]);
            }
            return result;
        }
        if(cols==1){
            for(int p=0;p<rows;p++){
                result.add(matrix[p][0]);
            }
            return result;
        }*/
        //int count=(rows>cols)?cols:rows;
        //i<(count+1)/2 
        //不用上面的作为截止条件也可以,用temp
        for(int i=0;;i++){
            int a=0;
            int b=0;
            int temp=0;
            for(a=i,b=i;b<cols-i;b++){
                temp=1;
                result.add(matrix[a][b]);
            }
            if(temp==0)
                break;
            else
                temp=0;

            for(a++,b--;a<rows-i;a++){
                temp=1;
                result.add(matrix[a][b]);
            }
            if(temp==0)
                break;
            else
                temp=0;

            for(a--,b--;b>i-1;b--){
                temp=1;
                result.add(matrix[a][b]);
            }

            if(temp==0)
                break;
            else
                temp=0;

            for(a--,b++;a>i;a--){
                temp=1;
                result.add(matrix[a][b]);
            }

            if(temp==0)
                break;
            else
                temp=0;
        }
        return result;
    }
}
  • 由temp作为终止条件,一旦某个方向上没有遍历,就结束整个遍历
  • 坐标依次:
  • (i,i)-(i,cols-1-i)
  • (i+1,cols-1-i)-(rows-1-i,cols-1-i)
  • (rows-1-i,cols-2-i)-(rows-1-i,i)
  • (rows-2-i,i)-(i+1,i)
  • 附上大佬的简明扼要版:
链接:https://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a?toCommentId=1330635
来源:牛客网

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] array) {
        ArrayList<Integer> result = new ArrayList<Integer> ();
        if(array.length==0) return result;
        int n = array.length,m = array[0].length;
        if(m==0) return result;
        int layers = (Math.min(n,m)-1)/2+1;//这个是层数
        for(int i=0;i<layers;i++){
            for(int k = i;k<m-i;k++) result.add(array[i][k]);//左至右
            for(int j=i+1;j<n-i;j++) result.add(array[j][m-i-1]);//右上至右下
            for(int k=m-i-2;(k>=i)&&(n-i-1!=i);k--) result.add(array[n-i-1][k]);//右至左
            for(int j=n-i-2;(j>i)&&(m-i-1!=i);j--) result.add(array[j][i]);//左下至左上
        }
        return result;       
    }
}
PCL 动态半径滤波【2025最新版】 使用PCL实现的2022年最新SCI论文——【Design of Dust-Filtering Algorithms for LiDAR Sensors Using Intensity and Range Information in Off-Road Vehicles】 一文中提出用于自动驾驶点云剔除粉尘、雨雪等影响因素导致的噪声点滤波算法。 阅读详情

相关推荐

【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结

文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ...

xiaosha_的博客 6892

剑指Offer——顺时针打印矩阵(牛客网)

一、问题描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 输入输出 输入 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]...

qq1354452957的博客 279

瑞萨RA6M5驱动ST7735屏幕避坑指南:从软件SPI到显示汉字与图形的完整流程

本文详细介绍了瑞萨RA6M5单片机驱动ST7735屏幕的完整流程,涵盖硬件连接、软件SPI控制、汉字显示及图形绘制优化等关键步骤。通过避坑指南和实用代码示例,帮助开发者解决屏幕初始化、时序控制、字库移植等常见问题,实现高效稳定的显示效果。

weixin_28705087的博客 275

29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 解题思路: 根据题目示例 matrix = [[1,2,3],[4,5,6],[7,8,9]] 的对应输出 [1,2,3,6,9,8,7,4,5] 可以发现,顺时针打印矩阵的顺序是 “从左向右、从上向下、从右向左、从下向上” 循环。 因此,考虑设定矩阵的“左、上、右、下”四个边界,模拟以上矩阵遍历顺序。 算法流程: 空值处理: 当 matrix 为空时,直接返回空列表 [] 即可。 初始化: 矩阵 左、右、上、下 四个边界 l

carpe_diem0的博客 521

在Docker中集成GPU监控体系

先上效果图 等文档整理出来再更

tamako0v0的博客 2471

实战指南:基于华为Ascend NPU的大模型W8A8量化调优与精度提升

本文提供了一份基于华为Ascend NPU进行大模型W8A8量化的实战调优指南。详细介绍了从环境搭建、使用msmodelslim框架进行基础量化,到通过离群值抑制、校准集优化和量化回退等关键技术提升精度的全流程。旨在帮助开发者在华为NPU硬件上实现模型推理的显著加速,同时有效控制精度损失。

weixin_29227425的博客 271

【数组】顺时针打印矩阵

题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 解题思路: 顺时针即:从第一行第一列开始,顺时针绕圈开始打印数字。 ...

yunyuzhu的博客 584

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3873

顺时针打印矩阵(简单)

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例1 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例2 输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 做题思路 顺时针打印矩阵的顺序是”从左向右、从上向下、从右向左、从下向上“循环,设定矩阵的”左、上、右、下.

zxw20171828的博客 707

自抗扰控制(ADRC)理论与工程实践:6.1 离散时间ADRC的推导

本文系统阐述了自抗扰控制(ADRC)的离散化方法,重点对比了前向欧拉法和基于零阶保持器(ZOH)的精确离散化两种方法。前向欧拉法计算简单但精度较低,稳定性受采样周期约束;ZOH法精度高但对大采样周期更鲁棒。文章详细推导了跟踪微分器、扩张状态观测器和控制律的离散形式,分析了采样周期选择的关键因素,为ADRC的数字实现提供了理论指导。

技术工作者 197

利用插件扩展 Qt 应用程序

不仅 Qt 本身可以通过插件进行扩展,而且 Qt 应用程序也可以通过插件来扩展,这需要应用程序使用 `QPluginLoader` 检测和加载插件。

青春不老,奋斗不止! 1万+

【Leetcode刷题篇】剑指offer29 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 就按照顺序打印 class Solution { public int[] spiralOrder(int[][] ma.

Mind_programmonkey的博客 513

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 876

算法题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

1. 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ,则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 例子图示: 2. 题解+代码(Java和Python) 简单来说,就是不断地收缩矩阵的边界 定义四个变量代表范围,up、down、left、right 向右走存入整行的值,当存入后,该行再也不会被遍历,代表上边界的

bboy枫亭的博客 2332

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java输入一个矩阵,按照从外向里以顺时针的顺序依次打印

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路: 向右走存入整行的值,当存入后,该行再也不会被遍历,代表上边界的 up 加一,同时判断是否和代表下边界的 down 交错...

zhaoyi666的博客 544

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

17 顺时针打印矩阵: Java实现顺时针打印矩阵。即输入一个矩阵,按照从外向里逆时针的顺序打印出每一个数字

转载来源:https://blog.youkuaiyun.com/qq_40409115/article/details/80503624 逆时针打印矩阵,输入一个矩阵,按照从外向里逆时针的顺序打印出每一个数字。 如 输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 首先我们观察 4 × 4的...

皮卡丘的博客 360

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

由外向里顺时针打印矩阵元素

原本只是实现下面 1 这个问题,扩展问题并得到问题 2 的实现思路,最后发现剑指offer上有一道经典的顺时针打印矩阵元素的题目,基于问题 2 的编程思路给出了剑指offer上这道题自己的实现。 1、给定一个正整数n,输出一个n*n的矩阵,矩阵的元素由外向内以顺时针方向从1开始递增 输入输出示例如下: Input:2 Output:1 2                3 4

ld的专栏 1051

[python] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字[顺时针打印矩阵]

算法参考: 剑指offer面试题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 - 优快云博客 http://blog.youkuaiyun.com/yanxiaolx/article/details/52254590 剑指offer_输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 - 优快云博客 http://blog.youkuaiyun.com/lingongheng/ar

yangnianjinxin的博客 3401

剑指offer_21:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

/** * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 */ package Chap2; import java.util.ArrayList; /** * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 */ //思路只要把最外面的一圈走完,就可以缩小矩阵,类似递归的去完成 public class PrintMatrix { public...

王文强的博客 583

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,

package com.dixin.temp;import org.junit.Test;import java.util.ArrayList;/** * Created by admin on 2017/10/26. * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, * 例如,如果输入如下矩阵:1 2 3 4 * 5 6

社会你鑫哥的博客 1027

第二十题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 传统的方法一: import java.util.ArrayList; public class Solution { ...

sun_fengjiao的博客 2065

剑指offer:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. Java代码实现 import java.util.ArrayList; public class Solut...

LeetCode:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum 206

[算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素

import java.util.*;import static java.lang.System.out; /** * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, * 例如,如果输入如下矩阵: * 1 2 3 4 * 5 6 7 8 * 9 10 11 12 * 13 14 15 16 * 则依次打印出数字 * 1,2,3,4,8,12,16,15

qq523786283的博客 633

剑指offer题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 在喝了二两酒之后突发奇想,突然发现一个简单的解法。 ...

小维天使001 Blog 405

从外向里以顺时针的顺序依次打印出矩阵的每一个数字

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

江说江湖专栏:欠世界一个伟大的产品! 875
上一篇: 前序中序重建二叉树
下一篇: (网易2018校招笔试)[编程题]合集
ListentTome
博客等级 码龄9年 3粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值