【LeetCode】HOT 100(21)

这篇具有很好参考价值的文章主要介绍了【LeetCode】HOT 100(21)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题单介绍:

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

目录

题单介绍:

题目:560. 和为 K 的子数组 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

题目:543. 二叉树的直径 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


题目:560. 和为 K 的子数组 - 力扣(Leetcode)

【LeetCode】HOT 100(21),LeetCode HOT 100,leetcode,算法,c++

题目的接口:

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {

    }
};

解题思路:

遇到这种题目,

先不管三七二十一马上暴力试一下能不能过完样例:

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int cnt = 0;
        for(int i = 0; i < nums.size(); i++) {
            int sum = 0;
            for(int j = i; j < nums.size(); j++) {
                sum += nums[j];
                if(sum == k) cnt++;
            }
        }
        return cnt;
    }
};

好的失败了:

【LeetCode】HOT 100(21),LeetCode HOT 100,leetcode,算法,c++

 那就没办法用暴力求解了,

老老实实想该怎么优化这个算法,

这道题可以用前缀和 + 哈希来做,

具体思路如下:

等等,官方题解有详细的视频解说,

解说是个小姐姐,声音非常好听,强烈建议自己去听一下,

那我这里就不讲解思路了,传送门:560. 和为 K 的子数组 - 力扣(Leetcode)

代码如下:

代码:

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int, int> mp;
        mp[0] = 1;
        int cnt = 0, preSum = 0;
        for(const auto& e : nums) {
            preSum += e;
            if(mp.find(preSum - k) != mp.end()) {
                cnt += mp[preSum - k];
            }
            mp[preSum]++;
        }
        return cnt;
    }
};

过过过过啦!!!!

【LeetCode】HOT 100(21),LeetCode HOT 100,leetcode,算法,c++

题目:543. 二叉树的直径 - 力扣(Leetcode)

【LeetCode】HOT 100(21),LeetCode HOT 100,leetcode,算法,c++

题目的接口:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int ans = 0;
    int diameterOfBinaryTree(TreeNode* root) {

    }
};

解题思路:

久违的简单题,

这道题的思路并不难,根据题意,

找最长的直径,不难想到,

找一棵树的最长直径其实就是找这个树中,

每一棵子树的左子树的最大深度 + 右子树的最大深度(当然你说最大高度也行)

然后他们之中的最大值其实就是树的最大直径,

来看代码:

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int ans = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        depth(root);
        return ans;
    }
private:
    int depth(TreeNode* root) {
        if(root == nullptr) return 0;
        int left = depth(root->left);  //左子树的最大深度
        int right = depth(root->right);//右子树的最大深度
        ans = max(ans, left + right);  //找出直径最长的子树
        return max(left, right) + 1;   //这个是查找最大深度
    }
};

过过过过啦!!!!

【LeetCode】HOT 100(21),LeetCode HOT 100,leetcode,算法,c++

写在最后:

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

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

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~文章来源地址https://www.toymoban.com/news/detail-525116.html

到了这里,关于【LeetCode】HOT 100(21)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】HOT 100(2)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:5. 最长回文子串 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过

    2024年02月09日
    浏览(36)
  • 【LeetCode】HOT 100(20)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:621. 任务调度器 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过

    2024年02月16日
    浏览(38)
  • 【LeetCode】HOT 100(1)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:2. 两数相加 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过过

    2024年02月08日
    浏览(38)
  • 【LeetCode】HOT 100(11)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:64. 最小路径和 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过

    2024年02月15日
    浏览(40)
  • 【LeetCode】HOT 100(16)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:124. 二叉树中的最大路径和 - 力扣(Leetcode) 题目的接口: 解题思路:

    2024年02月12日
    浏览(33)
  • 【LeetCode】HOT 100(18)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:148. 排序链表 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过

    2024年02月15日
    浏览(38)
  • LeetCode 热题 HOT 100

    重点是当有一个链表为空了不单独处理,按节点为0处理。 滑动窗口! 首先要判断slow需不需要更新,怎么判断?slow = max(umap[s[fast]], slow);什么意思,就是说:**umap[s[fast]]的意义是,为了在slow和fast之间不出现重复字符,slow能处于的最左位置。**如图,当j第一次到d,将umap[s[j

    2024年02月07日
    浏览(46)
  • 【LeetCode】HOT 100(12)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:75. 颜色分类 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过过

    2024年02月09日
    浏览(52)
  • 【LeetCode】HOT 100(15)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:98. 验证二叉搜索树 - 力扣(Leetcode) 题目的接口: 解题思路: 代码:

    2024年02月11日
    浏览(60)
  • 【LeetCode】HOT 100(22)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:538. 把二叉搜索树转换为累加树 - 力扣(Leetcode) 题目的接口: 解题思路

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包