剑指offer:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路:这个题考虑的情况比较多,考察的是细心程度和面对复杂问题的逻辑分析能力。耐心分析就好。
首先在while里将矩阵输出到只剩下一行或者一列或者一个元素。
int left = 0 ,right = matrix[0].size()-1,top = 0,bottom = matrix.size()-1;
vector<int> result;
while(left < right && top < bottom ){
for(int i = left; i <= right; i++){//从左到右
result.push_back(matrix[top][i]);
}
for(int i = top +1; i <= bottom; i++){//从上到下
result.push_back(matrix[i][right]);
}
for(int i = right - 1; i >= left; i--){//从右到左
result.push_back(matrix[bottom][i]