给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

输入:
[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
package com.csu.marden;import java.util.ArrayList;
import java.util.List;public class Demo2 {public static void main(String[] args) {int [][] arr={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};show(diy_print(arr));}public static void show(List list){for(int i=0;i<list.size();i++){System.out.print(list.get(i)+"  ");}}public static List diy_print(int [] [] arr){ArrayList<Integer> list=new ArrayList<>();if(arr==null || arr.length==0 || arr[0].length==0){return list;}//定义方向int [] dx={0,1,0,-1};int [] dy={1,0,-1,0};//定义方向索引int d=0;int n=arr.length;int m=arr[0].length;int x=0;int y=0;boolean [][] visited=new boolean[n][m];while(list.size()<n*m){list.add(arr[x][y]);visited[x][y]=true;//寻找下一个位置的坐标int nx=x+dx[d];int ny=y+dy[d];if(nx<m && nx>=0 && ny<n && ny>=0 && !visited[nx][ny]){x=nx;y=ny;continue;}else{d=(d+1)%4;nx=x+dx[d];ny=y+dy[d];x=nx;y=ny;}}return list;}}

螺旋打印二维数组(字节三面)相关推荐

  1. 打印二维数组的三种方法

    方法一:常规法 老老实实传二维数组. void print1(int arr[3][5], int row, int col) {int i = 0;int j = 0;for (i = 0; i & ...

  2. 顺时针螺旋打印二维数组

    想起来一道做过两次的竞赛题,明明之后重写了标程第二次还是想不起来怎么写了,愣是连续两次打表过(捂脸 题目:1,2,3-n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下: 输入数字2,则程序输出: 1 ...

  3. python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例

    import itertools def spiral(n,m): _status = itertools.cycle(['right','down','left','up'])#用于状态周期性的切换 ...

  4. 算法笔记-螺旋输出二维数组

    算法笔记-螺旋输出二维数组 1.思路:二维数组看做一个坐标,遍历者当成一个人,那么我们定义这个人的位置,以及当前面朝的方向,还有这个人转向次数.初始位置,人在(x,y)=(0,0)处,面向右方,右方的 ...

  5. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...

  6. 通过指针访问二维数组的三种方法

    下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针.指针数组.数组指针.指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助. 程序如下: #include <std ...

  7. js-练习题-循环打印二维数组-二维数组求和-个人所得税

    循环打印二维数组 <script>var arr=new Array();for(i=0;i<5;i++){arr[i]=new Array();for(j=0;j<8;j++ ...

  8. java打印二维数组_Java中如何打印二维数组

    在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...

  9. 顺时针打印二维数组C语言递归,按顺时针打印矩阵

    存在二种解题思路: 一种是递归解法,一种是层层递进解法 图解递归解法 如图所示, 一个5*5的矩阵 先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图. 将3*3的矩阵继续打印最外层,思路与打印最 ...

最新文章

  1. SQL代码-创建DeskInfo表
  2. Windows窗口风格
  3. A Data Access Layer to persist business objects using attributes and reflection - Part II [无常译]...
  4. MVC3 在提交表单以后 return View(model) 页面不会根据model的内容更新表单
  5. 安卓关于图片压缩的那些事儿,希望给每个安卓开发人员一些帮助
  6. Median(POJ-3579)
  7. 一段可自动点击运行代码(只偷偷的点一次)
  8. IEEE 各项协议、RFC 文档
  9. 网络工程师的人生之路是这样的开始的!
  10. java中StringBuilder为单线程做的,StringBuffer相反
  11. matlab 角速度,从您的移动设备获取并绘制角速度和方向数据
  12. Android淑女剑之HorizontalScrollView之窈窕淑女
  13. ESP-01S烧录MQTT固件连接阿里云
  14. 糖醋鲤鱼——经典美食
  15. 计算机网络路由器和交换机之间该如何配置,交换机怎么配置?交换机和路由器有什么区别?...
  16. ASEMI高压MOS管ASE65R330参数,ASE65R330图片
  17. 【Dubbo】dubbo 2.6.x 的dubbo-admin管理平台的搭建
  18. ubuntu16.04纯净系统配置安装集锦
  19. 数显之家快讯:【SHIO世硕心语】LCD、OLED、QLED的区别知多少?
  20. 农夫过河问题 matlab,趣味英语:农夫过河问题

热门文章

  1. 2计算机基础总结ppt课件,计算机基础知识2幻灯片课件.ppt
  2. 软件著作权申请流程介绍
  3. [cryptoverse CTF 2023] crypto部分
  4. PHP设计BBS,基于mysql的bbs设计二_PHP教程
  5. 初识Linux下C语言编程
  6. Intel HD-Audio driver 解析
  7. 二本渣渣的我有幸通过简历,五轮面试,成功拿到阿里P6的offer!
  8. 支付宝二维码生成,可以自定义金额和备注(不限制生成数量)
  9. tp框架 后台 利用二维码生成器 生成二维码 跳转页面
  10. Android 一个应用启动另外一个应用