一道面试题
将1-100放入10X10的二维数组当中,放置规则如下:
面试官说如果这种题40秒钟之内没有想法,就不要做开发了。在cocoachina上已经发过了。
------解决方案--------------------google 螺旋矩阵
------解决方案--------------------40秒没完全搞清楚的飘过!
------解决方案--------------------票过, 没有!
------解决方案--------------------我看了一下时间,我用了3分钟
看来我做不了开发了
——————
头一次看见这东西,说我的思路,有时间在写全
这个东西炸一看挺晕,仔细想就是算坐标
起始位置是(0.0)终止是(99.99),从左上到右下
现在用变量代替x,y需要一个变量i表示行
循环x.x到x=i到y=i-1
嵌入循环x=x-1-i, y=y-1-i
同比循环x=x-1-i,y=i
逆循环,x=i+1,y=i+1
------解决方案--------------------慢慢旋进去,就跟版主说的
------解决方案--------------------自己写了一个,发现代码有点傻,还是不要发出来
------解决方案--------------------能向右走就向右走,不能向右走就向下走,不能向下走就向左走,不能向左走就向上走,不能向上走就向右走
------解决方案--------------------40秒内能够有想法,这应该是大多数合格的程序员都能做到。
能够有想法,跟测试程序完全正确而结束,是两个概念。也许你需要1小时才能提交你的代码,但是一开始这个想法并不需要20秒钟。
这里是一个“很傻的”写法,但是这个想法应该不需要20秒钟就能想出来了。
using System;
namespace ConsoleApplication1
{
static class Program
{
static void Main(string[] args)
{
var array = new int[10, 10];
开始填数(array, 0, 0, 1, Direction.向右);
for (var i = 0; i <= array.GetUpperBound(0); i++)
{
for (var j = 0; j <= array.GetUpperBound(1); j++)