MT9. 二维数组打印
描述
有一个二维数组 (n*n) ,写程序实现从右上角到左下角沿主对角线方向打印。(注:主对角线方向为从左上角指向右下角这一斜线的方向)
示例1
输入:
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4
输出:
[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]
C++ 解法, 执行用时: 10ms, 内存消耗: 8552KB, 提交时间: 2016-05-24
class Printer { public: vector<int> arrayPrint(vector<vector<int> > arr, int n) { // write code here vector<int>res; //从右上角依次打印直到正对角线 for(int i=n-1;i>=0;i--) { int x=0; int y=i; while(x<n && y<n) { res.push_back(arr[x++][y++]); } } //从正对角线依次打印 for(int i=1;i<n;i++) { int x=i; int y=0; while(x<n && y<n) { res.push_back(arr[x++][y++]); } } return res; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 8552KB, 提交时间: 2016-04-27
class Printer { public: vector<int> arrayPrint(vector<vector<int> > arr, int n) { n = arr.size(); vector<int> result; for (int i = n - 1;i >= 0;i--) { int x=0, y=i; for (int j = 0;j <n-i;j++) { //cout << i << " " <<j << endl; x =0+ j; y =i+ j; //cout << x << " " << y << endl; result.push_back(arr[x][y]); } } if(n<=1) return result; for (int i = 1;i <= n - 1;i++) { int x = i, y = 0; for (int j = 0;j < n - i;j++) { //cout << i << " " << j << endl; x =i+ j; y =0+ j; //cout << x << " " << y << endl; result.push_back(arr[x][y]); } } return result; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 8552KB, 提交时间: 2016-04-13
class Printer { public: vector<int> arrayPrint(vector<vector<int> > arr, int n) { // write code here vector<int> res; int i,j,k; for(k=n-1;k>=0;--k) { for(i=0,j=k;i<n && j<n;++i,++j) res.push_back(arr[i][j]); } for(k=1;k<n;++k) { for(i=k,j=0;i<n && j<n;++i,++j) res.push_back(arr[i][j]); } return res; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 8552KB, 提交时间: 2016-03-24
class Printer { public: vector<int> arrayPrint(vector<vector<int> > arr, int n) { // write code here vector<int>vec; for(int i = n-1;i>=0;i--){ int x = 0; int y = i; while(x<n && y<n){ vec.push_back(arr[x++][y++]); } } for(int i = 1;i<n;i++){ int x = i; int y = 0; while(x<n && y < n){ vec.push_back(arr[x++][y++]); } } return vec; } };
C++ 解法, 执行用时: 10ms, 内存消耗: 8552KB, 提交时间: 2016-02-28
class Printer { public: vector<int> arrayPrint(vector<vector<int> > arr, int n) { // write code here vector<int>ans; if(n==0) return ans; if(n==1) { ans.push_back(arr[0][0]); return ans; } for(int i=n-1;i>=1-n;i--) { int x=0,y=i; if(i<0) { y=0; x=-i; } for(int j=0;j<n;j++) { if(y>=n||y<0||x>=n||x<0) break; ans.push_back(arr[x][y]); y++; x++; } } return ans; } };