您的位置:首页 > 其它

【leetcode】Array——Spiral MatrixII(59)

2016-02-11 22:43 435 查看
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

继承上一道题目的思路:
使用while true 循环,在里面给四个边界进行判断
代码:
int[][]result =
new int[n][n];

if(n==0)
return result;
int count =1;
int top=0;int button=n-1;int right=n-1;int left=0;
while(true){
if(top>button||left>right)
break;

for(int i=left;i<=right;i++,count++){
result[top][i]=count;
}
top++;

if(top>button||left>right)
break;

for(int i=top;i<=button;i++,count++)
result[i][right]=count;
right--;

for(int i=right;i>=left;i--,count++)
result[button][i]=count;
button--;

if(top>button||left>right)
break;

for(inti =button;i>=top;i--,count++)
result[i][left]=count;
left++;
}

return result;

改进思路:其实内部并不需要进行边界判断,因为n确定之后,循环的次数肯定是n*n次,所以只需要
while(count<=n*n)即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: