【LeetCode】HOT 100(25)

news2024/9/20 23:31: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.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<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++) {
            //检查该点是否访问过,没有就继续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<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.coloradmin.cn/o/733573.html

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

相关文章

从零开始 Spring Boot 66:JPA 查询参数

从零开始 Spring Boot 66&#xff1a;JPA 查询参数 图源&#xff1a;简书 (jianshu.com) JPA 的查询参数分为两种&#xff1a; 命名参数&#xff08;Named Parameters&#xff09;位置参数&#xff08;Positional Parameters&#xff09; 类似于 Python 中的函数的位置参数和…

Linux的网络配置与远程连接与文件传输

&#xff08;该图由AI绘制 关注我 学习AI画图&#xff09; 目录 网络配置 1、ifconfig查看网络信息 2、与网卡相关的配置文件 3、查询计算机的网络状态 4、systemctl启动/重启/停止网络 Linux远程连接与文件传输 1、为什么需要远程连接 2、SSH协议 3、sshd服务 4、…

2023CCF CAT- 热身赛

NOIP普及组 字符串 排序2017 动态规划 递推 USACO 2001 贪心 牛客小白月赛12 说实话还是很喜欢打比赛&#xff0c;喜欢AC的感觉&#xff0c;但是这玩意咋越来越难了那。。。。。 扎心了&#xff0c;不是~~~~~ 当个爱好吧&#xff0c;还是很喜欢当年打比赛和队友相视一笑的样子…

宇凡微2.4g无线合封芯片,高集成内置九齐单片机

2.4GHz是指一段频率范围&#xff0c;用来表示无线通信中的特定频率范围。在无线传输产品和设备中&#xff0c;2.4GHz被广泛应用&#xff0c;用于传输固定频率的波形以实现接收和发射功能。 需要注意的是&#xff0c;2.4GHz和蓝牙功能在基本上是相似的&#xff0c;但并不是所有…

前端面试刷题整理

第一题&#xff1a;es6 class语法 题目&#xff1a;现有三种菜单&#xff0c;button属性&#xff0c;select属性&#xff0c;model属性 class Mune{constructor(title,icon){this.title titlethis.icon icon}isDisabled(){return false}exec(){} } class Button extends Mun…

LeakTracer代码学习(1)

项目中有的时候会产生内存泄漏&#xff0c;以往的经验&#xff0c;检测工具更倾向于使用LeakTracer进行检测泄漏问题&#xff0c;但是直接使用会有些问题&#xff0c;比如堆栈不全都是??等问题&#xff0c;该专题希望自己能够坚持将LeakTracer的源码梳理清楚&#xff0c;以供…

ModaHub魔搭社区:RESTful API 的方式访问全球领先的向量数据库Milvus

目录 Insert CreateIndex and Load Search or Query 作为全球领先的开源向量数据库,Milvus 一直致力于满足不同用户的场景和需求,聆听社区的声音。 最近, 我们发现,很多用户的数据中 常常包含各种不确定类型的数据,也有用户提出希望以 RESTful API 的方式访问 Milvus。…

【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(三)

贴接上回。。。 【往期FAQ参考】 【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答&#xff08;一&#xff09; 【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答&#xff08;二&#xff09; 【本期FAQ】 1、第一次调用geolocation.getCurrentLocation()接口&#xff…

一份非常牛逼的计算机相关技术资料整理

最近发现GitHub上一个非常牛逼的项目。作者收录了一整套 计算机相关的技术资料整理。 收录内容包括&#xff0c;但不仅仅包括&#xff0c;比如比较实用的计算机相关技术书籍&#xff0c;可以在短期之内入门的简单实用教程、一些技术网站以及一些写的比较好的博文。真的得给作者…

postman测试传参格式

postman测试传参格式 创建User实体 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class User {private Integer id;private String name; }接口参数是集合 PostMapping("…

大规模语言模型剪枝又一力作,比SparseGPT还快300倍!

©Paperweekly 原创 作者 | An. 单位 | 中科院自动化所 研究方向 | 计算机视觉、模型压缩 DenseNet、ConvNeXt、Network Slimming 一作刘壮研究员的剪枝新工作&#xff0c;针对 LLMs 特点设计的极低成本无需微调的剪枝算法&#xff0c;耗时接近幅值剪枝&#xff0c;性能表…

基于Spring Boot的高校实验室信息管理系统设计与实现(Java+spring boot+MySQL+VUE)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的高校实验室信息管理系统设计与实现&#xff08;Javaspring bootMySQLVUE&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 后端&#xff1a;Java springboot…

玩转ChatGPT:Code interpreter (vol. 1)

一、写在前面 喜大普奔&#xff0c;GPT-4传说中的Code interpreter插件已经可以用了&#xff01;&#xff01;&#xff01; 二、什么是Code interpreter 代码解释器&#xff08;Code Interpreter&#xff09;是一个工具&#xff0c;它能够读取和执行编程代码。这里有几个主要…

程序请求报错java.lang.NoSuchMethodError

[23-7-3 9:09:19:069 CST] 00000017 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E:应用程序 east5_20230629_war 中 servlet XXX 的某一服务方法创建了未捕获到的异常。 创建的异常&#xff1a;org.springframework.web.util.NestedServ…

Android 短视频直播特效,音视频图像处理 FFmepg OpenGLES OpenCV开发详细内容

1 音视频开发基础 2 Android OpenGL ES开发基础 3 Android FFmpeg OpenGLES 音视频播放器核心开发 4 Android FFmpeg H.264 AAC 封装mp4 5 Android OpenCV 机器学习人脸标定SDK开发实战 6 Android OpenCV 开发实践 7 Android 短视频App FFmpeg OpenGL ES OpenCV人脸特效渲…

python pytorch 纯算法实现前馈神经网络训练(数据集随机生成)

python pytorch 纯算法实现前馈神经网络训练&#xff08;数据集随机生成&#xff09; 下面这个代码大家可以学习学习&#xff0c;这个代码难度最大的在于反向传播推导&#xff0c; 博主推了很久&#xff0c;整个过程都是纯算法去实现的&#xff0c;除了几个激活函数&#xff0…

【前端知识】React 基础巩固(十八)——组件化开发(二)

React 基础巩固(十八)——组件化开发&#xff08;二&#xff09; 生命周期 生命周期是一个抽象的概念&#xff0c;在生命周期的整个过程中&#xff0c;分成了很多个阶段 比如装载阶段&#xff08;Mount&#xff09;&#xff0c;组件第一次在 DOM 树中被渲染的过程比如更新过程…

【C语言】你知道浮点数是怎么存储的吗?

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 积学以储宝&#xff0c;酌…

Debian 11 x64 安装 MySQL 8.0.33

更新 sudo apt update sudo apt install gnupg安装 DEB Package wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb sudo dpkg -i mysql-apt-config_0.8.25-1_all.deb具体版本见官方网站&#xff1a;MySQL Community Downloads&#xff0c;这里仅以版本 …

详解什么是新零售和新零售的四种商业模式

前言 自推出新零售概念以来&#xff0c;新零售已成为当前的热门话题。今天我们将进一步了解什么是新零售。 一、什么是新零售? 新零售&#xff0c;英文是New Retailing&#xff0c;即企业以互联网为依托&#xff0c;通过运用大数据、人工智能等先进技术手段&#xff0c;对商…