螺旋打印二维数组(字节三面)
给定一个包含 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;}}
螺旋打印二维数组(字节三面)相关推荐
- 打印二维数组的三种方法
方法一:常规法 老老实实传二维数组. void print1(int arr[3][5], int row, int col) {int i = 0;int j = 0;for (i = 0; i & ...
- 顺时针螺旋打印二维数组
想起来一道做过两次的竞赛题,明明之后重写了标程第二次还是想不起来怎么写了,愣是连续两次打表过(捂脸 题目:1,2,3-n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下: 输入数字2,则程序输出: 1 ...
- python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例
import itertools def spiral(n,m): _status = itertools.cycle(['right','down','left','up'])#用于状态周期性的切换 ...
- 算法笔记-螺旋输出二维数组
算法笔记-螺旋输出二维数组 1.思路:二维数组看做一个坐标,遍历者当成一个人,那么我们定义这个人的位置,以及当前面朝的方向,还有这个人转向次数.初始位置,人在(x,y)=(0,0)处,面向右方,右方的 ...
- 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )
文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...
- 通过指针访问二维数组的三种方法
下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针.指针数组.数组指针.指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助. 程序如下: #include <std ...
- js-练习题-循环打印二维数组-二维数组求和-个人所得税
循环打印二维数组 <script>var arr=new Array();for(i=0;i<5;i++){arr[i]=new Array();for(j=0;j<8;j++ ...
- java打印二维数组_Java中如何打印二维数组
在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...
- 顺时针打印二维数组C语言递归,按顺时针打印矩阵
存在二种解题思路: 一种是递归解法,一种是层层递进解法 图解递归解法 如图所示, 一个5*5的矩阵 先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图. 将3*3的矩阵继续打印最外层,思路与打印最 ...
最新文章
- SQL代码-创建DeskInfo表
- Windows窗口风格
- A Data Access Layer to persist business objects using attributes and reflection - Part II [无常译]...
- MVC3 在提交表单以后 return View(model) 页面不会根据model的内容更新表单
- 安卓关于图片压缩的那些事儿,希望给每个安卓开发人员一些帮助
- Median(POJ-3579)
- 一段可自动点击运行代码(只偷偷的点一次)
- IEEE 各项协议、RFC 文档
- 网络工程师的人生之路是这样的开始的!
- java中StringBuilder为单线程做的,StringBuffer相反
- matlab 角速度,从您的移动设备获取并绘制角速度和方向数据
- Android淑女剑之HorizontalScrollView之窈窕淑女
- ESP-01S烧录MQTT固件连接阿里云
- 糖醋鲤鱼——经典美食
- 计算机网络路由器和交换机之间该如何配置,交换机怎么配置?交换机和路由器有什么区别?...
- ASEMI高压MOS管ASE65R330参数,ASE65R330图片
- 【Dubbo】dubbo 2.6.x 的dubbo-admin管理平台的搭建
- ubuntu16.04纯净系统配置安装集锦
- 数显之家快讯:【SHIO世硕心语】LCD、OLED、QLED的区别知多少?
- 农夫过河问题 matlab,趣味英语:农夫过河问题