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

顺时针旋转矩阵

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

空间复杂度为O(n*n)的题解

class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        vector<vector<int> > res(n,vector<int>(n,0));
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                res[i][j]=mat[n-1-j][i];
            }
        }
        return res;
    }
};

空间复杂度为O(1) 的题解(原地变换)

先进行对角线交换,在进行左右交换

class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        int i,j,temp;
        for(i=0;i<n;i++){  //先根据对角线(左上--右下)交换
            for(j=0;j<i;j++){
                temp=mat[i][j];
                mat[i][j]=mat[j][i];
                mat[j][i]=temp;
            }
        }
        for(i=0;i<n;i++){  //再进行左右交换
            for(j=0;j<n/2;j++){
                temp=mat[i][j];
                mat[i][j]=mat[i][n-j-1];
                mat[i][n-1-j]=temp;
            }
        }
        return mat;
    }
};
全部评论
第二步是上下变换吧
点赞 回复 分享
发布于 2024-03-01 17:31 陕西

相关推荐

08-28 11:37
已编辑
华东师范大学 Java
Sigma777:本来想说师弟怎么把我这个老东西卷没了,仔细一看是师兄 简历不错,但是得准备好选型话术,比如我举个例子你为什么要用caffeine,一般我们的小项目不会有这么hot的key需要本地缓存,你要说明你是如何发现有这么hot的key连redis都兜不住的,引入后优化了多少时间,然后还有本地缓存大小设置为多少,这个大小能保证热点key不会因为太小而淘汰也不会因为太大影响服务吗,为什么不用guava,引入本地缓存同步问题怎么解决。 然后分库分表,为什么你觉得要分表,数据量多少,分多少张表几个库,分片键选择依据,你的所有查询能不能准确定位到某一张避免全库扫描,有没有数据倾斜问题就是分的每张表数据量差距特别大,你是一开始分库分表还是后期发现瓶颈才分,如果后期才分你如何把旧表的数据搬过去同时还能确保业务正常运行。 然后是消息队列,你说缓存高并发请求,却选择了吞吐量较小的rabbit,有什么原因吗,为什么不选Kafka。 然后你说分布式锁解决集群环境并发安全,也就是说你是集群部署的,请问是怎么部署的,docker还是k8s,部署几台,配置是多少,jvm参数设置是多少,有监控吗,线上遇到故障吗,怎么解决的,有做负载均衡吗,数据是怎么压测的等等。 zset缓存本月实时排行数据具体怎么做的,会有大key问题吗。 其他本小渣暂时想不到了,留给其他大神点评
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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