【LeetCode】HOT 100(21)

news/2025/1/7 21:22:46/

题单介绍:

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

目录

题单介绍:

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

题目的接口:

解题思路:

代码:

过过过过啦!!!!

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

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


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

题目的接口:

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;}
};

好的失败了:

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

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

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

具体思路如下:

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

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

那我这里就不讲解思路了,传送门: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;}
};

过过过过啦!!!!

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

题目的接口:

/*** 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;   //这个是查找最大深度}
};

过过过过啦!!!!

写在最后:

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

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

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


http://www.ppmy.cn/news/738416.html

相关文章

微信破解WiFi密码如何操作?一招帮你查看密码!

对用手机用户来说我们使用最多的软件莫过于腾讯的微信了&#xff01;对于使用最为广泛的软件来说&#xff0c;如果能够帮助我们解决网络问题那无疑是最好的&#xff0c;因为有时你们破解wifi还要下载一大堆破解软件。现在直接通过微信就能破解WIFI了。而且还能查看破解密码。 下…

微信公众号 去除 “防欺诈盗号请勿支付或输入qq密码“ 提示

提示如下&#xff1a; 解决方案 1、微信认证 目前只有已经通过微信认证的账号可以去除这个提示。在公众账号下左侧列表中找到微信认证&#xff0c;按照提示申请认证即可。 二、设置业务域名 1.进入公众账号设置  2.进入功能设置  3.在业务域名设置中&#xff0c;设置通过…

如何更改微信登录密码?经验分享!微信怎样修改登陆密码?

我们通常使用微信来与朋友同事进行沟通交流信息&#xff0c;分享生活的点点滴滴&#xff0c;在我们频繁使用微信的情况下&#xff0c;可能会导致我们的微信号被入侵、异地登录种种情况&#xff0c;可能是我们的微信账号信息泄露了。遇到这种情况我们就需要保护我们微信账号的安…

怎样操作修改微信登录密码?技巧经验!如何进行更改微信登陆密码?

我们通常使用微信来与朋友同事进行沟通交流信息&#xff0c;分享生活的点点滴滴&#xff0c;在我们频繁使用微信的情况下&#xff0c;可能会导致我们的微信号被入侵、异地登录种种情况&#xff0c;可能是我们的微信账号信息泄露了。遇到这种情况我们就需要保护我们微信账号的安…

微信hook——登录界面的账号密码

Hook方法一&#xff1a; 手机号码登陆&#xff0c;Method跟踪点击登陆事件&#xff1a; 点击事件内容 分析bj方法&#xff0c;有两个string参数&#xff0c;依然最后调用了com.tencent.mm.modelsimple.q&#xff0c;hook这个bj方法&#xff0c;查看两个参数是什么。 Hook方法&a…

微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法...

本文介绍如何去除微信顶部的“防欺诈盗号,请勿支付或输入qq密码”。或 “防欺诈或盗号&#xff0c;请不要输入qq密码”如图所示。 一、微信认证 目前只有已经通过微信认证的账号可以去除这个提示。在公众账号下左侧列表中找到微信认证&#xff0c;按照提示申请认证即可。 二、设…

【转载】别人是怎么破解你们家无线密码的

今天想玩风暴英雄混个卡德加的头像&#xff0c;结果一直连不上&#xff0c;一气之下打开了之前安装在硬盘里的Parrot OS&#xff0c;准备日常更新下系统/软件什么的。结果发现搬了家之后还没有在Parrot上用过这的WiFi&#xff0c;大半夜的也不好叫醒临屋的妹子&#xff0c;正好…

密码盗取的原理及防范

『安全技术』密码盗取的原理及防范 作者&#xff1a;罗伯特robert 一、非法获取Password的原理&#xff1a; Edit控件是Windows的一个标准控件&#xff0c;当把其Password属性设为True时,就会将输入的内容屏蔽为星号&#xff0c;从而达到保护的目的。虽然我们看来都是星号&a…