蛇形打印数组(某宝典公司面试手撕代码题)
背景杂谈
不知道为什么,可能脑袋一下放空了,一不小心就想到了大约2年前,在某个知名的宝典公司面试中,遇到了一道手撕代码题,和多年前的google的那道螺旋遍历数据有异曲同工之妙。现脑洞大开,想写下与大家分享下,解题思路可能不是很正确,欢迎大家建议和指正。
问题描述
有一个数组如下所示,现在需要遍历下,顺序为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1 | 2 | 6 | 7 | 14 |
---|---|---|---|---|
3 | 5 | 8 | 13 | 15 |
4 | 9 | 12 | 16 | 19 |
10 | 11 | 17 | 18 | 20 |
分析:咋一看,和那个螺旋数组挺像的,不过还是有些不一样的
求解思路
如下图所示:首先可以全部一个方向遍历所有的数据,然后把每一组遍历的结果加入list集合中。最后在list集合中,奇偶交错输出所有的数据就可以了。以上思路可能太直白了,应该有最优解,暂时没想到,欢迎大家留言交流。
代码示例
*** 蛇形打印数组* */public static void printSnakeArrays(int [][] array){//斜着遍历的每一行的数据集合List<ArrayList> list = new ArrayList<>();//临时数据ArrayList temp;int i=0,x,y;for(int j=0;j<array[i].length;j++){temp=new ArrayList();temp.add(array[i][j]);x=0;y=j;while ((x+1<array.length)&&(y-1>=0)){temp.add(array[x+1][y-1]);x++;y--;}list.add(temp);//竖着打印if (j==array[i].length-1) {for(int k=1;k<array.length;k++){x=k;y=j;temp=new ArrayList();temp.add(array[x][y]);while ((x+1)<array.length&&(y-1>=0)){temp.add(array[x+1][y-1]);x++;y--;}list.add(temp);}}}System.out.println("result:");int index=0;for(int m=0;m<list.size();m++){index++;if (index%2==0) {System.out.println(list.get(m));}else {Collections.reverse(list.get(m));System.out.println(list.get(m));}}}
运行结果
[1]
[2, 3]
[4, 5, 6]
[7, 8, 9, 10]
[11, 12, 13, 14]
[15, 16, 17]
[18, 19]
[20]
蛇形打印数组(某宝典公司面试手撕代码题)相关推荐
- 2023华为OD面试手撕代码真题
很多小伙伴后台私信我,让我出一些面试中的手撕代码题. 一般面试的时候每一轮技术面都会出一到两个手撕代码题,这些题的特点就是,非常短小,易于理解.不可能会再出阅读理解一样的机试题的.但是这些题目也非常注 ...
- 华为手撕代码c语言题目,想去面试?这10道最高频的手撕代码题都会了吗?
原标题:想去面试?这10道最高频的手撕代码题都会了吗? 来源:Python与算法之美 ID:Python_Ai_Road 作者:梁云1991 想去看机会?下面这10道最高频的手撕代码面试题都会了吗? ...
- 2023华为OD面试手撕代码经验分享
我们先来看下这个同学的面试经历吧,非常有借鉴的意义. [22届考研渣渣的od求职之旅,推荐一下两个人,德科hr和牛客的老哥] "*********",hr给了机会吧,一开始我都没想 ...
- 秋招总结:遇到的手撕代码题
2020年秋招总结:遇到的手撕代码题 跟谁学 一面:求连续子数组的最大和(力扣 53) [思路:力扣系列略,题解区都比我讲得好] 二面:翻转字符串中的每个单词(简单题,比较常见,没去找对应的原题) [ ...
- 前端date format_前端面试-手撕代码篇
前言 在前端面试有一个非常重要的环节,也是面试者最担心的一个环节.对"手撕代码"的考察需要面试者平时总结和积累(临时抱佛脚是不好使的),在这里笔者就自己如何攻破"手撕代码 ...
- C/C++笔试面试手撕代码注意事项
C/C++笔试和面试过程中难免会要手撕代码,那么手撕代码,面试官或者看试卷的人一般会看哪些点呢?我列举了一些我认为的点(码农适用): 算法思想是否正确 代码逻辑是否清晰明了 代码风格是否美观简洁 注释 ...
- 手撕代码 多线程手撕代码题
天天乐学 面试直接让我手撕代码 完全不会呀 那不完蛋~ 两个线程,线程1打印A,线程2打印B,两个线程同时并发,要求保证先打印A,后打印B 使用synchronized+ wait.notify pu ...
- 关于面试时碰到的几个多线程手撕代码题
总结秋招和实习面试的时候碰到的几个手撕的多线程代码题: 问题一:三个线程循环打印ABC,线程一打印A,线程二打印B,线程三打印C,打印10遍即可.这个问题主要是考察怎么使用线程同步的问题,通常情况下我 ...
- FPGA秋招面试手撕代码20+
目录 前言 1.序列检测器 (1)三段式状态机实现方式 (2)移位寄存器实现方式 2.序列生成器 (1)移位寄存器方式实现 (2)计数器方式实现 (3)三段式状态机方式实现 3.分频 (1)偶数分频 ...
最新文章
- 使用eclipse集成开发环境开发第一个嵌入式Linux驱动
- golang中的strings.IndexAny
- 名人尿炕被人发现后怎么办?
- 汽车租赁系统java窗口_共享型汽车租赁系统(SSM+MySql)
- wxWidgets:wxFileSystemWatcher 示例
- 中等职业计算机等级考试,中等职业学校计算机等级考试题库(含答案):EXCEL
- docker rabbitmq:3.9.10-management
- wordpress 调用css,WordPress折腾记-精简CSS及JS在插件中的调用
- bzoj 3261: 最大异或和
- Oracle and MS SQL Server 2005
- 计算机统考模拟系统3.0,统考计算机模拟系统操作流程
- Java实现腾讯云发送短信
- ssh_exchange_identification read Connection reset by peer
- 反余弦函数用途之一:关系距离计算
- android适配器报空指针错误,适配器总是出现空指针问题
- Objective-C 2.0 Morden Runtime
- 网上图书订阅系统之(招标书,投标书)
- 系统操作原理:进程的状态和转换(五态模型)
- Apache服务器配置默认首页文件名和网站路径
- UML与软件开发的关系
热门文章
- AMD和CMD出生的背景和它们解决的问题
- C语言:L1-034 点赞 (20分)(解题报告)
- 方法的重载与重写_深入解析JAVA重载与重写的区别
- 辽宁交通高等专科学校有计算机专业吗,辽宁省交通高等专科学校可以转专业吗,辽宁省交通高等专科学校新生转专业政策...
- 搭建MySQL+MHA服务易错位置
- VRRP协议简介与实例配置
- python如何打印26个字母_玩法#用Python学会打印26个英语字母,简单操作如下
- excel查标准正态分布_终于搞清楚正态分布、指数分布到底是个啥了
- mysql5.6 线程池_[MySQL5.6] Percona Server 5.6.14的线程池浅析
- mysql insert 主键冲突_insert 时防止出现主键冲突错误的方法