背景杂谈

不知道为什么,可能脑袋一下放空了,一不小心就想到了大约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]

蛇形打印数组(某宝典公司面试手撕代码题)相关推荐

  1. 2023华为OD面试手撕代码真题

    很多小伙伴后台私信我,让我出一些面试中的手撕代码题. 一般面试的时候每一轮技术面都会出一到两个手撕代码题,这些题的特点就是,非常短小,易于理解.不可能会再出阅读理解一样的机试题的.但是这些题目也非常注 ...

  2. 华为手撕代码c语言题目,想去面试?这10道最高频的手撕代码题都会了吗?

    原标题:想去面试?这10道最高频的手撕代码题都会了吗? 来源:Python与算法之美 ID:Python_Ai_Road 作者:梁云1991 想去看机会?下面这10道最高频的手撕代码面试题都会了吗? ...

  3. 2023华为OD面试手撕代码经验分享

    我们先来看下这个同学的面试经历吧,非常有借鉴的意义. [22届考研渣渣的od求职之旅,推荐一下两个人,德科hr和牛客的老哥] "*********",hr给了机会吧,一开始我都没想 ...

  4. 秋招总结:遇到的手撕代码题

    2020年秋招总结:遇到的手撕代码题 跟谁学 一面:求连续子数组的最大和(力扣 53) [思路:力扣系列略,题解区都比我讲得好] 二面:翻转字符串中的每个单词(简单题,比较常见,没去找对应的原题) [ ...

  5. 前端date format_前端面试-手撕代码篇

    前言 在前端面试有一个非常重要的环节,也是面试者最担心的一个环节.对"手撕代码"的考察需要面试者平时总结和积累(临时抱佛脚是不好使的),在这里笔者就自己如何攻破"手撕代码 ...

  6. C/C++笔试面试手撕代码注意事项

    C/C++笔试和面试过程中难免会要手撕代码,那么手撕代码,面试官或者看试卷的人一般会看哪些点呢?我列举了一些我认为的点(码农适用): 算法思想是否正确 代码逻辑是否清晰明了 代码风格是否美观简洁 注释 ...

  7. 手撕代码 多线程手撕代码题

    天天乐学 面试直接让我手撕代码 完全不会呀 那不完蛋~ 两个线程,线程1打印A,线程2打印B,两个线程同时并发,要求保证先打印A,后打印B 使用synchronized+ wait.notify pu ...

  8. 关于面试时碰到的几个多线程手撕代码题

    总结秋招和实习面试的时候碰到的几个手撕的多线程代码题: 问题一:三个线程循环打印ABC,线程一打印A,线程二打印B,线程三打印C,打印10遍即可.这个问题主要是考察怎么使用线程同步的问题,通常情况下我 ...

  9. FPGA秋招面试手撕代码20+

    目录 前言 1.序列检测器 (1)三段式状态机实现方式 (2)移位寄存器实现方式 2.序列生成器 (1)移位寄存器方式实现 (2)计数器方式实现 (3)三段式状态机方式实现 3.分频 (1)偶数分频 ...

最新文章

  1. 使用eclipse集成开发环境开发第一个嵌入式Linux驱动
  2. golang中的strings.IndexAny
  3. 名人尿炕被人发现后怎么办?
  4. 汽车租赁系统java窗口_共享型汽车租赁系统(SSM+MySql)
  5. wxWidgets:wxFileSystemWatcher 示例
  6. 中等职业计算机等级考试,中等职业学校计算机等级考试题库(含答案):EXCEL
  7. docker rabbitmq:3.9.10-management
  8. wordpress 调用css,WordPress折腾记-精简CSS及JS在插件中的调用
  9. bzoj 3261: 最大异或和
  10. Oracle and MS SQL Server 2005
  11. 计算机统考模拟系统3.0,统考计算机模拟系统操作流程
  12. Java实现腾讯云发送短信
  13. ssh_exchange_identification read Connection reset by peer
  14. 反余弦函数用途之一:关系距离计算
  15. android适配器报空指针错误,适配器总是出现空指针问题
  16. Objective-C 2.0 Morden Runtime
  17. 网上图书订阅系统之(招标书,投标书)
  18. 系统操作原理:进程的状态和转换(五态模型)
  19. Apache服务器配置默认首页文件名和网站路径
  20. UML与软件开发的关系

热门文章

  1. AMD和CMD出生的背景和它们解决的问题
  2. C语言:L1-034 点赞 (20分)(解题报告)
  3. 方法的重载与重写_深入解析JAVA重载与重写的区别
  4. 辽宁交通高等专科学校有计算机专业吗,辽宁省交通高等专科学校可以转专业吗,辽宁省交通高等专科学校新生转专业政策...
  5. 搭建MySQL+MHA服务易错位置
  6. VRRP协议简介与实例配置
  7. python如何打印26个字母_玩法#用Python学会打印26个英语字母,简单操作如下
  8. excel查标准正态分布_终于搞清楚正态分布、指数分布到底是个啥了
  9. mysql5.6 线程池_[MySQL5.6] Percona Server 5.6.14的线程池浅析
  10. mysql insert 主键冲突_insert 时防止出现主键冲突错误的方法