【LeetCode】HOT 100(25)

简介: 【LeetCode】HOT 100(25)

题单介绍:

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


目录


题单介绍:


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


题目的接口:


解题思路:


代码:


过过过过啦!!!!


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


题目的接口:


解题思路:


代码:


过过过过啦!!!!


写在最后:


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


题目的接口:

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

解题思路:

这道题是图和并查集,


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


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


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


具体思路是这样:


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


通过dfs遍历图求解:


代码如下:


代码:

class Solution {
public:
    vector res; //存放结果的数组
    bool Nofind;
    vector calcEquation(vector>& equations, 
        vector& values, vector>& queries) {
        // string - string(double) a连接上b(b带上权值)
        unordered_map> > g; //用于构建图
        unordered_map 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.0
                continue;
            }
            //如果进行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> >& g
        , unordered_map& 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++) {
            //检查该点是否访问过,没有就继续dfs
            if(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> reconstructQueue(vector>& people) {
    }
};

解题思路:

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


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


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


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


具体思路如下:


先把对列从高到矮排好,


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


代码如下:


代码:

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


过过过过啦!!!!


写在最后:

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


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


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


相关文章
|
Web App开发 缓存 数据安全/隐私保护
解决浏览器自动填充用户名和密码最优雅的解决方案,优雅永不过时
浏览器记住用户名和密码并且自动填充怎么破?百度找的方法好像都不够优雅,优雅永不过时,今天我就带你优雅的解决这个问题。
3300 0
|
存储
SAP扩充物料的采购视图和会计视图
你一定想,哇,我们已经创建了供应商主数据,是不是我们就可以开始采购了?no你想买什么呢?你想买的是物料。你的物料,采购主数据创建了吗?没有。所以MM50扩充采购视图。但是,朋友,你太幼稚了。如果你想要采购某个物料,你对于物料主数据的维护顺序是这样的:基本视图--会计视图--采购视图不维护会计视图的话,创建采购信息记录的时候,会提示物料没有在1020工厂中维护。
5108 0
|
9月前
|
JSON API 数据格式
深入研究:Shopee 商品详情 API 接口详解
Shopee 商品详情 API 是针对东南亚及中国台湾地区电商开发者的强大工具,可获取商品的详细信息(如价格、库存、描述等),支持竞品分析与市场调研。通过 HTTP GET/POST 请求,传入商品 ID 等参数,返回 JSON 格式的商品数据,包括基本信息、销售数据、商家信息等。以下是 Python 示例代码,展示如何使用 requests 库调用该接口并处理响应数据。注意实际应用需遵循 Shopee 认证要求。
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与ai有什么区别
本文探讨了“人工智能”与“AI”在语义、使用场景及技术侧重点上的差异,强调理解这些差异对把握技术发展的重要性。文中分析了两者的学术与通俗应用场景,并结合生成式人工智能认证项目(由培生于2024年推出),说明如何通过理论与实践结合,规避AI局限性,推动技术创新。最终呼吁在概念辨析中探索人工智能的未来潜力。
|
并行计算 Linux TensorFlow
TensorFlow各个GPU版本CUDA和cuDNN对应版本
TensorFlow各个GPU版本CUDA和cuDNN对应版本
TensorFlow各个GPU版本CUDA和cuDNN对应版本
|
边缘计算 人工智能 监控
边缘计算与AI结合的场景案例研究
【8月更文第17天】随着物联网(IoT)设备数量的爆炸性增长,对实时数据处理的需求也随之增加。传统的云计算模型在处理这些数据时可能会遇到延迟问题,尤其是在需要即时响应的应用中。边缘计算作为一种新兴的技术趋势,旨在通过将计算资源更靠近数据源来解决这个问题。本文将探讨如何将人工智能(AI)技术与边缘计算结合,以实现高效的实时数据分析和决策制定。
1382 1
|
供应链 监控 数据安全/隐私保护
ERP系统中的供应商协同与供应链优化解析
【7月更文挑战第25天】 ERP系统中的供应商协同与供应链优化解析
963 0
|
存储 关系型数据库 MySQL
debian11安装mysql5.7
debian11安装mysql5.7
717 0
|
存储 数据处理 Apache
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
万字长文 | 泰康人寿基于 Apache Hudi 构建湖仓一体平台的应用实践
794 0