每日一练 —— set习题

news/2024/10/22 19:10:51/

1. 两个数组的交集

题目链接:349. 两个数组的交集 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/intersection-of-two-arrays/description/

这题使用set,因为set具有排序和去重的特性

    

思路:

        1.两个值相等就是交集

        2.小的那个值++,因为是小的那个值,那么后面就一定不会有这个值,那么小的一定不是交集

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> v;set<int> s1;set<int> s2;s1.insert(nums1.begin(),nums1.end());s2.insert(nums2.begin(),nums2.end());auto it1 = s1.begin();auto it2 = s2.begin();while(it1 != s1.end() && it2 != s2.end()){if(*it1 < *it2){it1++;}else if(*it1 > *it2){it2++;}else{v.push_back(*it1);it1++;it2++;}}return v;}
};

在这里提一下如果是找差集的话

 


2. 环形链表II

题目链接:

142. 环形链表 II - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/linked-list-cycle-ii/description/

这题使用set存储的是链表每个节点,当插入到重复的节点时,该节点就是入环的第一个节点,然后直接返回就行

思路:先定义一个set,set里面存储一个节点的指针,用一个指针把链表给遍历一遍,比如说先遍历一个3,用3查找一下在不在set里面,不在的话就把3这个节点的指针的地址放进set里面,然后继续遍历,当再次遍历到2这个节点时,发现set里面有2这个节点的地址,那么就说明这个链表是环形链表,并且2是这个环形链表的入口点

 

class Solution {
public:ListNode *detectCycle(ListNode *head){set<ListNode*> L;ListNode* cur = head;while(cur){if(L.count(cur)){return cur;}else{L.insert(cur);}cur = cur->next;}return nullptr;}
};

 


完结撒花~


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

相关文章

【前端】如何制作一个自己的网页(14)

当我们还需要对网页中的内容进行局部样式的修改。这时候&#xff0c;就需要用到HTML中的重要元素&#xff1a;span。 span是一个行内元素&#xff0c;可以对HTML文档中的内容进行局部布局。 如图&#xff0c;我们给标题和段落元素的部分内容设置了各种样式。 接下来&#xff0…

【第一章·为什么要学习编程】

目录 1.1 学习编程的热潮 1.1.1 席卷全球的“编程一小时” 1.1.2 资本汹涌的少儿编程 1.1.3 “再不学编程就晚了” 1.2 为什么要学编程 1.3 什么是“编程” 1.4 怎么学编程 1.4.1 一切都是计算 1.4.2 学编程不是学语法 1.4.3 动手&#xff0c;动手&#xff0c;再动手…

1282:最大子矩阵

题目&#xff1a; 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵&#xff0c;你的任务是找到最大的非空(大小至少是1 1)子矩阵。 比如&#xff0c;如下4 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 9 2 -4 1 -1 8 这个子矩阵的大小是15。 …

代码随想录算法训练营Day08 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

文章目录 344.反转字符串思路与重点 541. 反转字符串II思路与重点 卡码网&#xff1a;54.替换数字思路与重点 344.反转字符串 题目链接&#xff1a;344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09;讲解链接&#xff1a;代码随想录 (programmercarl.com)状态&#xff…

Ubuntu:用户不在sudoers文件中

1、问题 执行sudo xxx命令时&#xff0c;显示&#xff1a; user 不在sudoers文件中 需要查看系统版本进入恢复模式修复。 2、重启进入恢复模式 查看系统命令&#xff1a;uname -r 可能显示为&#xff1a;6.8.0-45-generic 重启Ubuntu系统&#xff0c;在开机时按ESC进入模…

SpringBoot框架的车辆管理自动化解决方案

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Linux 系统上生成大文件的多种方法

在 Linux 系统上生成大文件有多种方法&#xff0c;具体取决于你的需求&#xff08;例如&#xff0c;文件内容、生成速度等&#xff09;。以下是一些常见的方法&#xff1a; 1. 使用 dd 命令 dd 是一个强大的命令行工具&#xff0c;用于转换和复制文件。你可以使用它来创建一个…

Maven骨灰级教程:从小白到高手的终极指南(一)

目录 1. Maven的概念 1.1 什么是Maven 1.2 什么是依赖管理 1.3 什么是项目构建 1.4 Maven的应用场景 1.5 为什么使用Maven 1.6 Maven模型 2.初识Maven 2.1 Maven安装 2.1.1 安装准备 2.1.2 Maven安装目录分析 2.1.3 Maven的环境变量 2.2 Maven的第一个项目 2.2.1…