题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        vector<int> v;
        if(matrix.empty())
            return v;
        int rows=matrix.size();
        int cols=matrix[0].size();
        int left=0,right=cols-1,top=0,bottom=rows-1;
        while(left<=right && top<=bottom){
            for(int i=left;i<=right;++i)
                v.push_back(matrix[top][i]);
            for(int i=top+1;i<=bottom;++i)
                v.push_back(matrix[i][right]);
            if(top!=bottom)
                for(int i=right-1;i>=left;--i)
                    v.push_back(matrix[bottom][i]);
            if(left!=right)
                for(int i=bottom-1;i>top;i--)
                    v.push_back(matrix[i][left]);
        left++,right--,top++,bottom--;
        }


//         int left=0,top=0,right=cols-1,bottom=rows-1;
//         while(left<=right && top<=bottom){
//             //left——》right
//             for(int i=left;i<=right;++i)
//                 v.push_back(matrix[top][i]);
//             //top-->bottom
//             for(int i=top+1;i<=bottom;++i)
//                 v.push_back(matrix[i][right]);
//             //right-->left
//             if(top!=bottom)
//             for(int i=right-1;i>=left;--i)
//                 v.push_back(matrix[bottom][i]);
//             //bottom-->top
//             if(left!=right)
//             for(int i=bottom-1;i>top;--i)
//                     v.push_back(matrix[i][left]);
//             left++,top++,right--,bottom--;
//         }

//         int circles=((rows<cols?rows:cols)-1)/2+1;//圈数
//         for(int i=0;i<circles;i++){
//         //从左往右打印
//             for(int j=i;j<cols-i;j++){
//                 v.push_back(matrix[i][j]);
//             }
//         //从上往下打印
//             for(int k=i+1;k<rows-i;k++){
//                 v.push_back(matrix[k][cols-1-i]);
//             }
//         //从右往左打印(判断有无重复打印)
//             for(int m=cols-i-2;(m>=i)&&(rows-i-1!=i);m--){
//                 v.push_back(matrix[rows-i-1][m]);
//             }
//         //从下往上(判断是否重复打印)
//             for(int n=rows-i-2;(n>i)&&(cols-i-1!=i);n--){
//                 v.push_back(matrix[n][i]);
//             }
//         }


        return v;
    }
};
全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务