【LeetCode】HOT 100(25)

news/2024/11/16 18:36:10/

题单介绍:

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

目录

题单介绍:

题目:399. 除法求值 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

题目:406. 根据身高重建队列 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


题目:399. 除法求值 - 力扣(Leetcode)

题目的接口:

class Solution {
public:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {}
};

解题思路:

这道题是图和并查集,

怎么说呢,就是我大概都不会,

但是使用的算法是dfs深度优先搜索,

所以还是值得一战,人生总得挑战一下困难,

具体思路是这样:

用一个map来构建无向图,再用一个map来存标记位,

通过dfs遍历图求解:

代码如下:

代码:


class Solution {
public:vector<double> res; //存放结果的数组bool Nofind;vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {// string - string(double) a连接上b(b带上权值)unordered_map<string, vector<pair<string, double>> > g; //用于构建图unordered_map<string, int> visit;                       //用来标记已经走过的节点//构建无向图,a-b的value是 3 的话,b-a就是 3 的倒数for(int i = 0; i < equations.size(); i++) {g[equations[i][0]].push_back({equations[i][1], values[i]});g[equations[i][1]].push_back({equations[i][0], 1.0 / values[i]});}//遍历queries,对每一组进行dfs计算//如果相连接,把路上的权值相乘就是结果for(int i = 0; i < queries.size(); i++) {if(g.find(queries[i][0]) == g.end()) {res.push_back(-1.0); //没出现就输出 -1.0continue;}//如果进行dfs之后,queries[0]到不了queries[1],让Nofind = true;Nofind = true;visit[queries[i][0]] = 1;dfs(g, visit, queries[i][0], queries[i][1], 1);visit[queries[i][0]] = 0;if(Nofind) res.push_back(-1.0);}return res;}private:void dfs(unordered_map<string, vector<pair<string, double>> >& g, unordered_map<string, int>& visit, const string& val, const string& target, const double& path) {//如果节点已经相连接,那就没有必要dfs搜索了if(Nofind == false) return;if(val == target) {Nofind = false;res.push_back(path);return;}for(int j = 0; j < g[val].size(); j++) {//检查该点是否访问过,没有就继续dfsif(visit[ g[val][j].first ] == 0) {visit[ g[val][j].first ] = 1;dfs(g, visit, g[val][j].first, target, path * g[val][j].second);visit[ g[val][j].first ] = 0;}}}
};

过过过过啦!!!!

题目:406. 根据身高重建队列 - 力扣(Leetcode)

题目的接口:

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {}
};

解题思路:

这道题目我读了好多遍不知道他究竟想说什么,

真的搞不懂,都不知道他为啥呀这样写题干,

我找了很多人的解释,找到了一个非常好的解释,我这里把链接贴出来,

他讲的真的是太好了,一下子就看懂了,真的是救星:题目意思解析,一看就懂

具体思路如下:

先把对列从高到矮排好,

然后根据他们看到的比自己高的人的数量逐个插入进对列即可,

代码如下:

代码:

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {//这个lambda表达式的意思是,身高高的在前面,一样高的,看到的人少的在前面sort(people.begin(), people.end(), [](const vector<int>& x, const vector<int>& y) {return x[0] > y[0] || (x[0] == y[0] && x[1] < y[1]);});vector<vector<int>> ans;for(const auto person : people) {//这里就是根据他看到前面有几个人来插入进队伍ans.insert(ans.begin() + person[1], person);}return ans;}
};

过过过过啦!!!!

写在最后:

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

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

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


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

相关文章

MYSQL索引为啥要用B+树储存数据呢

首先我们来分析一下需求 MYSQL索引需要怎样的数据结构 为了防止数据因为特(duan)殊(kai)情(dian)况(yuan)丢失,我们的数据肯定是要持久化的,也就是保存在硬件(磁盘)里面,而我们知道 磁盘相对于内存来讲 速度要慢了几万倍 甚至即使万倍 所以我们必须减少磁盘的I/O操作 再有呢…

为什么话筒对着音响会产生啸叫声

为什么话筒对着音响会产生啸叫声 啸叫在各种扩音系统中较为常见。记得原来读本科的时间&#xff0c;很多公共课---如高等数学&#xff0c;就会几个专业在一个大的梯形教室里一起上课&#xff0c;这时老师都要带着Mic用扩音器来讲课了&#xff0c; 有时就会出现啸叫&#xff0c;…

聚焦信息技术发展,博睿数据受邀出席产业链供需对接深度行北京站活动

7月6日&#xff0c;以“广聚群链 湾区启航”为主题的产业链供需对接深度行北京站活动圆满落幕。本次活动吸引了来自北京和广东的多家知名企业参与&#xff0c;博睿数据受邀出席了本次活动&#xff0c;同时携核心产品一体化智能可观测平台Bonree ONE参展&#xff0c;展示博睿数据…

Rdkit|SMARTS语言应用

github&#xff1a;地址 文章目录 Rdkit|SMARTS语言应用子结构搜索HasSubstructMatch(patt)得到子结构序列GetSubstructMatch删除子结构AllChem.DeleteSubstructs(m,patt)取代基替换AllChem.ReplaceSubstructs(m, patt, rep)显示核心结构显示侧链结构 Chem.ReplaceCore分子拆分…

如何利用ipad高效学习python

很多博主拍过iPad作为生产力的视频&#xff0c;比如用iPad画漫画、记笔记、剪视频、轻办公等等&#xff0c;那么iPad可以用来写代码、跑Python吗&#xff1f; 这也是一些初学Python的小伙伴关心的问题&#xff0c;他们经常下载一些编辑Python的APP&#xff0c;试图在上面练习P…

iPadOs中键盘手势大全

iPadOS 中键盘和手势的快捷操作大全 来源&#xff1a;爱思助手 快速移动光标和选择文本 在支持三维触控&#xff08;3D Touch&#xff09;的 iOS 设备上面移动光标非常简单&#xff0c;弹出键盘之后&#xff0c;我们只需要在键盘上面重压&#xff0c;即可触发可以任意移动的「…

iPad常用快捷键

iPad常用快捷键 设备:iPad Pro 12.9 第三代 键盘:罗技K380 tips:部分应用中,长按cmd键会显示出当前界面应用的快捷键,学会这个就不用记那么多快捷键了 系统 单击F4/cmdh    返回主页双击F4       进入后台多任务界面 cmdtab      顺序切换后台应用 cmds…

怎么通过Mac键盘在iPhone、iPad上快速打字?

相信大家有没有遇到过这样的困扰&#xff1f;在工作的时候&#xff0c;经常需要在手机回复短信、微信、微博回复个评论&#xff0c;经常在手机和Mac之间来回切换&#xff0c;容易打断自己的节奏。那么有没有办法通过Mac的键盘当做iPhone、iPad的外置键盘呢&#xff1f;还真有&a…