记录一下头条面试的惨败题(遍历回形数组)

      之前找工作的时候去头条碰碰运气,然后结果一面就惨败回家。不得不说头条的面试很有分量。一面小哥开场看了一下我的简历,然后直接就说那你做个题吧。然后现场写了个回形数组,让我写个算法遍历下。说实话本人算法 真的很水。也没有 刻意去研究过。所以当场就凉凉,尽然给面试官很猥琐的说,我能不能给你用快排排个序输出不就有序了。然后面试官笑而不语摇摇头。当时紧张加上思维混乱,总觉得用for循环加上递归能实现,但是苦于找不到递归出口。回来后研究了许久也没研究明白这破玩意怎么输出。今天咬咬牙把这个坑填了。查了一些资料发现好多大佬都写了具体实现。那我也不班门弄斧了。直接贴代码上来吧。

先看看什么是回形数组(谁想出来这么个缺德玩意的......)

然后用二维数组弄一个这玩意。题目就是这个

		int attrs[][] = {
				{0 ,1 ,2 ,3 },
				{11,12,13,4 },
				{10,15,14,5 },
				{9 ,8 ,7 ,6 },
		};

给定一个n阶数的回形数组,用代码遍历然后 有序输出

public static void output(int attrs[][]) {
    int count = row*col;
	int i = 0;
	int j = 0;
	while(count>0) {
		//输出上面的边
		for(int k=1;k<col;k++) {
			System.out.print(attrs[i][j]+" ");
			count -=1;
			j++;
		}
		//输出右边的边
		for(int k=1;k<row;k++) {
			System.out.print(attrs[i][j]+" ");
			count -=1;
			i++;
		}
		//输出下面的边
		for(int k=1;k<col;k++) {
			System.out.print(attrs[i][j]+" ");
			count -=1;
			j--;
		}
        //输出左面的边
		for(int k=1;k<row;k++) {
			System.out.print(attrs[i][j]+" ");
			count -=1;
			i--;
		}
        //遍历起始位置前进
		i++;
		j++;
        //每次遍历一环横竖各少两个边,所以减去
		row = row-2;
		col = col-2;
	}
}

这样就可以有序输出了,网上大神真的多。我看了一大圈全是C++和C语言的实现, 我就用Java写了一下,果然好使。真的屌。 发出来给大家共勉。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值