题解 | #顺时针旋转矩阵#

顺时针旋转矩阵

http://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc

其实主要就是两次翻转,把注意力放在矩形的四个角上,顺时针赚90度,其实可以转换成"/"对角线翻转一次,然后上下对称翻转一次,具体看代码
例如:

最初
[[1,2,3],
 [4,5,6],
 [7,8,9]]
 
首先"/"对角线翻转
[[9,6,3],
 [8,5,2],
 [7,4,1]]
 
然后上下对称翻转
[[7,4,1],
 [8,5,2],
 [9,6,3]]
 
 
class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        //"/"对角线翻转
        for(int i=0; i<n; ++i){
            for(int j=0; j+i<n; ++j){
                int temp = mat[i][j];
                mat[i][j] = mat[n-j-1][n-i-1];
                mat[n-j-1][n-i-1] = temp;
//                 swap(mat[i][j], mat[n-j-1][n-i-1]);
            }
        }
        //上下翻转
        for(int i=0; i<n/2; ++i){
            for(int j=0; j<n; ++j){
                int temp = mat[i][j];
                mat[i][j] = mat[n-i-1][j];
                mat[n-i-1][j] = temp;
//                 swap(mat[i][j], mat[n-i-1][j]);
            }
        }
        return mat;
    }
};
// {
//     [[1,2,3],
//      [4,5,6],
//      [7,8,9]]
    
//     [[9,6,3],
//      [8,5,2],
//      [7,4,1]]
    
//     [[7,4,1],
//      [8,5,2],
//      [9,6,3]]
// }
全部评论

相关推荐

06-18 13:28
已编辑
门头沟学院 Web前端
爱睡觉的冰箱哥:《给予你300的工资》,阴的没边了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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