【LeetCode】HOT 100(21)

news2024/11/25 1:01:20

题单介绍:

精选 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.coloradmin.cn/o/721332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

源启数据资产管理平台助力金融机构加速数据资产化过程

自2000年左右&#xff0c;金融行业开始做数据管理。从数据仓库到数据治理、数据应用&#xff0c;再到后来的大数据&#xff0c;以及今天的数据管理。我们把这个时期总结成数据资产化时代&#xff0c;或者叫国产化时代。 为什么有两个名字&#xff1f;数据资产化时代是因为国家…

关于PID闭环控制中上位机与下位机通讯代码的解析分享(一)

下位机接收数据代码&#xff08;以STM32单片机为例&#xff09;与上位机发送数据C#代码分享 1、下位机代码&#xff1a; /*** brief 接收的数据处理* param void* return -1&#xff1a;没有找到一个正确的命令.*/ int8_t receiving_process(void) {uint8_t frame_data[…

虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

PCG真好玩&#xff0c;门槛很低&#xff0c;天花板很高 文章目录 前言1. 基本撒点1.1 Landscape上撒点1.2 使用射线检测在地表面撒点1.3 使用曲线撒点1.3.1 沿曲线撒点1.3.2 在闭合曲线内部撒点 1.4 在StaticMesh表面撒点 2. 进阶撒点2.1 在闭合曲线内部放射状撒点2.2 在Mesh表…

MedCalc v22.009 医学ROC曲线统计分析软详细图文教程

简介 MedCalc是一款医学 ROC 曲线统计软件&#xff0c;用于ROC曲线分析的参考软件&#xff0c;医学工作者设计的医学计算器&#xff0c;功能齐全。它可以帮助医生快速作出普通的医学计算&#xff0c;从而对症下药。提供超过76种常用的规则和方法&#xff0c;包括&#xff1a;病…

《消失的她》豆瓣短评数据分析

《消失的她》豆瓣短评数据分析 文章目录 《消失的她》豆瓣短评数据分析一、前言二、数据加载和预处理三、探索性数据分析1、查看评论的评价分布2、查看评论点赞数的分布3、查看评论的地理分布 四、情感分析 一、前言 最近爆火的电影《消失的她》你们有没有去看过呢&#xff1f…

开源站点(jpress)部署

第三阶段基础 时 间&#xff1a;2023年7月5日 参加人&#xff1a;全班人员 内 容&#xff1a; 开源站点部署&#xff08;jpress&#xff09; 服务器设置&#xff1b;单台服务器&#xff0c;安装tomcat和mariadb 环境配置&#xff1a; 1、关闭防火墙 systemctl stop fir…

【大数据之Hive】二十、Hive之调优相关配置及Explain查看执行计划

1 Yarn资源配置 需要调整Yarn的参数与CPU、内存等资源有关 &#xff08;1&#xff09;yarn.nodemanager.resource.memory-mb   设置一个NodeManager节点分配给容器Container使用的内存&#xff0c;取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量&#x…

搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述 读写分离是常见的一种数据库架构&#xff0c;一般是由 1 主多从构成&#xff0c;特殊场景下也会存在多主多从的架构。 无论哪一种架构&#xff0c;对于应用程序来说都是多个数据源&#xff0c;增加了代码的复杂性。如果配合 mycat&#xff0c;则可以实现屏蔽数据库复…

【C++】深入剖析vector

好久不见~让大家久等啦~ 本期让我们来揭开vector的面纱&#xff0c;看看它底层是怎么实现的~ 目录 一、STL定义vector的源码分析&#xff1a; 二、vector的模拟实现 2.1 vector框架的搭建&#xff08;一些简单功能函数的实现&#xff09; 2.2 迭代器失效问题 2.2.1 实现i…

【Spring】SpringCloud Ribbon中的7种负载均衡策略!

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 负载均衡通器常有两种实现手段&#xff0c;一种是服务端负载均衡器&#xff0c;另一种是客户端负载均衡器&#xff0c;而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务…

个人总结:测试用例万能公式+常见例子(公式的运用)

前言 测试工程师面试的时候&#xff0c;有时候会当场考测试用例&#xff0c;毕竟这是测试工程师的基本功。 对于我来说&#xff0c;让我写测试用例会比让我直接说测试用例更好点。 直接嘴里说出来&#xff0c;容易逻辑混乱&#xff0c;给人一种想到啥说啥的感觉。 其实个人感…

MySQL学习基础篇(九)---子查询

MySQL学习基础篇(九)—子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询&#xff0c;这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT查询的能力&#xff0c;因为很多时候查询需要从结果集中获取数据&#xff0c;或者需要从同一个表中先计算得出…

MySQL安装与部署

第一种方法&#xff1a;在线安装 配置一个安装yum源 Adding the MySQL Yum Repository 可以手动配置yum源&#xff0c;baseurl指向国内镜像源地址&#xff0c;比如清华、中科大。 Installing MySQL Starting the MySQL Server&#xff1a; 查询临时登录密码 修改数据库密码…

CTFHub XSS DOM反射 WriteUp

前言&#xff1a;本文需要注册一个xss平台&#xff0c;以接收xss反弹回来的数据&#xff0c;请自己在互联网上寻找合适的xss平台 1. 构造闭合语句 根据题目提示&#xff0c;判断网站存在DOM xss漏洞 查看页面源代码&#xff0c;发现关键位置&#xff0c;其中CTFHub is very n…

【揭秘Vue核心】深入解析Object.defineProperty和Proxy的区别,让你秒懂!

问题&#xff1a;Object.difineProperty 和 proxy 有什么区别&#xff1f; Object.defineProperty 和 Proxy 是用于实现响应式数据的两种不同方式。 Object.defineProperty Object.defineProperty 通过直接修改对象的属性描述符来实现数据的劫持。Vue 2.x 中就是通过 Objec…

vscode 之 工作区的应用(解决vue2插件vetur、vue3插件volar禁用启用问题)

目录 前言创建工作区添加文件夹到工作区为当前打开的工作区指定特定环境工作区删除文件夹如何切换工作区 前言 工作区&#xff1f;&#xff1f;&#xff1f;为什么要工作区&#xff1f;&#xff1f;&#xff1f; 首先工作区简单理解就是vscode工作时的区域、范围&#xff1b; 延…

如何正确的安装MySQL

1. 使用rpm包在线安装 1.1 确认自己电脑版本(linux) [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)ps:本次安装采用的系统为Centos 7.9 所使用的mysql为5.7 1.2 下载rpm包 下载地址 https://dev.mysql.com/downloads/mysql/ ps: 自己…

初识树莓派:强大功能与创造力的结合

目录 树莓派4B简介&#xff1a; 树莓派系统镜像下载&#xff1a; 树莓派4B简介&#xff1a; 树莓派4B是一款功能强大且受欢迎的单板计算机&#xff0c;由树莓派基金会开发。作为树莓派系列的最新版本&#xff0c;4B提供了许多令人兴奋的特性和改进&#xff0c;使其成为教育、创…

SSM简单项目遇到的几个问题(最后一个问题,虽然能运行,但是我找不出问题出在哪里)

这几个问题&#xff0c;干扰了我很长时间。 主要因为书本的例子&#xff0c;是通过controller层返回到jsp层。但是&#xff0c;最后一个SSM项目&#xff0c;它用的是controller返回信息给Service层&#xff0c;再由Service层返回Jsp层。 实训&#xff1a;编写一个模糊查询姓名…

【Java基础教程】(三)程序概念篇 · 上:探索Java编程基础,注释、标识符、关键字、数据类型~

Java基础教程之程序概念 上 本节学习目标1️⃣ Java中的注释2️⃣ 标识符3️⃣ 关键字4️⃣ 数据类型4.1 整型&#x1f50d; 什么是变量&#xff1f;什么是常量&#xff1f;&#x1f50d;关于数据类型转换的规则&#xff1f; 4.2 浮点数&#x1f50d;关于Java的计算的缺陷 4.3…