【LeetCode】HOT 100(8)

题单介绍:

精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。

目录

题单介绍:

题目:48. 旋转图像 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

题目:49. 字母异位词分组 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


题目:48. 旋转图像 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {

    }
};

解题思路:

这道题如果可以再开一个矩阵来辅助旋转还是挺简单的,

直接根据规律拷贝过去就行了,但是题目要求上不让,

(吐槽:官解的方法一就是用辅助的矩阵可恶)

然后就是原地旋转的方法,

我也不知道他们是怎么想到这个规律的,

首先,根据对角线翻转矩阵:

然后再按照中线翻转矩阵:

 然后就成了,你敢信:

代码如下:

代码:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for(int i = 0; i < n; i++) { //沿着对角线翻转
            for(int j = i + 1; j < n; j ++) {
                swap(matrix[i][j], matrix[j][i]);
            }
        }
        for(int i = 0; i < n; i++) { //沿着中线翻转
            for(int j = 0; j < n / 2; j++) {
                swap(matrix[i][j], matrix[i][n - 1 - j]);
            }
        }
    }
};

过过过过啦!!!!

题目:49. 字母异位词分组 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {

    }
};

解题思路:

因为题目是要找字母相同的不同单词,

我马上想到的就是用哈希,用sort得到键值,

然后根据键值分类,

最后直接返回即可,实际上并不难,

官方的题解用了vector的emplace_back,我感觉没啥必要,就直接继续用push_back。

代码:

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> mp;
        for(auto e : strs) {
            string key = e;
            sort(key.begin(), key.end());
            mp[key].push_back(e); //根据键值分好字母相同的单词
        }
        vector<vector<string>> ans;
        for(auto it = mp.begin(); it != mp.end(); it++) {
            ans.push_back(it->second); //题目可以按照任意顺序返回,直接调迭代器push进数组就完了
        }
        return ans;
    }
};

过过过过啦!!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

猜你喜欢

转载自blog.csdn.net/Locky136/article/details/131004393
今日推荐