leetcode_59题——Spiral Matrix II(数组)
2015-06-02 10:45
351 查看
Spiral Matrix II
Total Accepted: 28996 Total Submissions: 91437My SubmissionsQuestion Solution
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 ] ]
Hide Tags
Array
这道题,需要将1...到n^2的所有数以螺旋的方式写到数组中,我采用的是一圈一圈的从外往里写,这个思路比较直接,而且时间复杂度为O(n),在可接受的范围之内
#include<iostream> #include<vector> using namespace std; vector<vector<int> > generateMatrix(int n) { vector<vector<int> >last_result; vector<int> temp; if(n<=0) return last_result; if(n==1) { temp.push_back(1); last_result.push_back(temp); return last_result; } for(int j=0;j<n;j++) temp.push_back(0); for(int i=0;i<n;i++) last_result.push_back(temp); int quan=n; int start_quan=1; int x1=0,x2=0; int y1=0,y2=n-1; int m1=n-1,m2=n-1; int n1=n-1,n2=0; while(quan>0) { for(int i=x2;i<=x2+quan-2;i++) { last_result[x1][i]=start_quan; start_quan++; } for(int i=y1;i<=y1+quan-2;i++) { last_result[i][y2]=start_quan; start_quan++; } for(int i=m2;i>=m2-(quan-2);i--) { last_result[m1][i]=start_quan; start_quan++; } for(int i=n1;i>=n1-(quan-2);i--) { last_result[i][n2]=start_quan; start_quan++; } quan-=2; x1++;x2++; y1++;y2--; m1--;m2--; n1--;n2++; if(quan==1) { last_result[x1][x2]=start_quan; break; } } return last_result; } int main() { vector<vector<int> > vec; int n=4; vec=generateMatrix(n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<vec[i][j]<<' '; cout<<endl; } }
相关文章推荐
- Python3学习之一环境搭建
- p6 备忘录
- Java中Serializable浅谈
- python学习整理
- Project Euler:Problem 28 Number spiral diagonals
- 九度OJ-题目1511:从尾到头打印链表
- Android手机分辨率基础知识(DPI,DIP计算)
- UVa 884 - Factorial Factors
- SQL数据库的增删改查
- Java for LeetCode 134 Gas Station
- C++11:强类型枚举(enum)
- Graph database_neo4j 底层存储结构分析(8)
- 使用X-UA-Compatible来设置IE浏览器兼容模式
- Android开发之ADB命令
- GRE ISSUE写作论证论据素材 国家制度建设类
- 车牌自动检测
- Meteor node.js 复制(copy)文件的方法
- ServletContext和ServletConfig区别
- 第十三周--动物怎么叫(1)
- 日经春秋 20150602