题目:

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 ]
]

代码:

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int> > ret(n, vector<int>(n,));
int circle = n/;
int v = ;
for ( int c=; c<circle; ++c )
{
// up
for ( int col=c; col<n-c; ++col ) ret[c][col]=v++;
// right
for ( int row=c+; row<n-c-; ++row ) ret[row][n--c]=v++;
// down
for ( int col=n--c; col>=c; --col ) ret[n--c][col]=v++;
// left
for ( int row=n--c; row>c; --row) ret[row][c]=v++;
}
if ( n & )
{
ret[circle][circle]=v;
}
return ret;
}
};

tips:

按照Spiral Matrix的顺序走一遍元素,维护一个v每次运算后+1。

============================================

第二次过这道题,思路跟第一次一样。

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int> > ret(n, vector<int>(n,));
if ( n< ) return ret;
int val = ;
for ( int i=; i<n/; ++i )
{
// north
for ( int p=i; p<n-i; ++p ) ret[i][p] = val++;
// east
for ( int p=i+; p<n--i; ++p ) ret[p][n--i] = val++;
// south
for ( int p=i; p<n-i; ++p ) ret[n--i][n--p] = val++;
// west
for ( int p=i+; p<n--i; ++p ) ret[n--p][i] = val++;
}
if ( n & ) ret[n/][n/] = val;
return ret;
}
};

最新文章

  1. github拉取和推送
  2. app:clean classes Exception
  3. 2016.10.30 NOIP模拟赛 day2 PM 整理
  4. 修改Linux默认启动级别或模式的方法
  5. JS在路径中传中文参数
  6. 创建JOB
  7. CI 框架去掉url 中index.php的方法
  8. 学习总结 for循环--冒泡排序
  9. 使用XCopy发布网页
  10. 浅谈Oracle函数返回Table集合
  11. pat 1055 区间前k个
  12. Strategy 模式
  13. Python学习笔记(五)Python的切片和迭代
  14. 用javascript把扑克牌理理顺!
  15. html代替submit按钮的图片代码
  16. MySQL插入数据时插入无效的列
  17. 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
  18. redis读书笔记
  19. poj3696 欧拉函数引用
  20. Unreal Engine 4 Based Materials

热门文章

  1. Altium_Designer17-PCB-如何重新定义板子外形
  2. I2C总线协议学习笔记 (转载)
  3. 问题 D: C++ 习题 输出日期时间--友元函数
  4. 2018.7.15 解决css中input输入框点击时去掉外边框方法
  5. maven没有servlet(创建servlet后报错)
  6. CUDA三维数组
  7. js实现弹窗一个ip在24小时只弹出一次的代码
  8. jq weui 图片浏览器Photo Browser 第一次点击任意图片总是显示第一张
  9. C++使用GDI+实现图片格式转换
  10. 【思维题 细节】loj#6042. 「雅礼集训 2017 Day7」跳蚤王国的宰相