您的位置:首页 > 其它

顺时针打印矩阵

2015-05-25 18:14 225 查看
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

例如:

input:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

output:

1 2 3 4

8 12 16 15

14 13 9 5

6 7 11 10

核心代码如下:

vector<int> printMatrix(vector<vector<int> > matrix) {
int row = matrix.size() - 1;
int col = matrix[0].size() - 1;
int total = (row + 1)*(col + 1);
int circle = 0;
vector<int> ans;
int i = 0, j = 0;
while(ans.size() < total){
while(j <= col){
ans.push_back(matrix[i][j]);
j++;
}
j--;i++;
while(i <= row && ans.size() < total){
ans.push_back(matrix[i][j]);
i++;
}
i--;j--;
while(j >= circle && ans.size() < total){
ans.push_back(matrix[i][j]);
j--;
}
j++;i--;
while(i >= circle+1 && ans.size() < total){
ans.push_back(matrix[i][j]);
i--;
}
i++;j++;
circle++;
row--;
col--;
}
return ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: