与set和map相关的OJ题练习

一、两个数组的交集

题目链接:

349. 两个数组的交集 - 力扣(LeetCode)

题目描述:

给两个数组,求在数组里面共同出现的部分,就是求两个数组的交集,返回顺序不做要求

解题思路:

求交集问题,可以先对数据进行去重+升序排序,然后两个数组同时从第一个开始走,当数值相同,则说明是交集,输出并两个同时走下一个,若是不相同,则让小的那一个单独走到下一个,直到某一个走完,则结束。

参考代码:

    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {//找交集先利用set去重加排序set<int> s1(nums1.begin(),nums1.end());set<int> s2(nums2.begin(),nums2.end());//升序序列找交集:相同,则为交集,不同,则小的往后走,其中一方结束则结束auto it1 = s1.begin();auto it2 = s2.begin();vector<int> ret;while(it1 != s1.end() && it2 != s2.end()){if(*it1 == *it2){ret.push_back(*it1);it1++;it2++;}else if(*it1 < *it2){it1++;}else{it2++;}}return ret;}

二、前k个高频单词

题目链接:

692. 前K个高频单词 - 力扣(LeetCode)

题目描述:

题目给你一个vector<string>类型,也就是单词序列,需要找到在序列中出现次数从多到少前k个单词,并且要求当单词出现次数相同时,要按照字典序排序,存入到一个vector<string>中返回

解题思路:

利用map去对单词进行统计然后按字典序输出,存放到一个vector<pair>中,然后对序列中的单词根据次数进行排序,由于题目要求相同时按照字典序排序,因此,使用排序的时候要求不破坏前后顺序,也就是要求使用具有稳定性的排序去进行排序,可以使用算法中提供的排序,也可以利用仿函数给定排序规则去实现

参考代码:

    class Compare{public:bool operator()(const pair<string,int>& x,const pair<string,int>& y)const {return x.second > y.second || (x.second == y.second && x.first < y.first);}};vector<string> topKFrequent(vector<string>& words, int k) {//使用map去统计每个单词的次数map<string,int> map_count;for(auto& e:words){map_count[e]++;}//此时输出的顺序是按照字典序输出的,将其存放到一个vector<pair>中,利用具有稳定性的方式按照次数排序即可vector<pair<string,int>> v(map_count.begin(),map_count.end());sort(v.begin(),v.end(),Compare());vector<string> ret;for(int i = 0;i<k;i++){ret.push_back(v[i].first);}return ret;}

三、复杂链表的深拷贝

题目链接:

LCR 154. 复杂链表的复制 - 力扣(LeetCode)

题目描述:

题目给了一个单向的链表,比起普通单链表,还多了一个随机指针random,每个节点的随机指针都随机指向其他节点或者是自己,也可能是空,题目要求拷贝一条一模一样的链表,难点在于随机指针要完成深拷贝,需要原链表和拷贝链表建立某种联系,使得能够知道原链表的随机指针是如何指向的

解题思路:

在C语言阶段时,我们采用通过将每个拷贝节点链接在原节点的方式建立链接去确定random指针的指向,现在我们学习了map以后,可以直接通过map去建立原链表和拷贝链表之间的链接,然后去确定好random

参考代码:

    Node* copyRandomList(Node* head) {//直接先拷贝一条链表Node* copy_head = nullptr;Node* copy_tail = nullptr;Node* cur = head;while(cur){if(copy_head == nullptr){copy_head = new Node(cur->val);copy_tail = copy_head;}else{Node* newnode = new Node(cur->val);copy_tail->next = newnode;copy_tail = newnode;}cur = cur->next;}//利用map建立两个链表之间的链接,并且通过原指针的random去找到copy后的random链接map<Node*,Node*> m;Node* cur1 = head;Node* cur2 = copy_head;while(cur1){m[cur1] = cur2;//建立链接cur1=cur1->next;cur2=cur2->next;}cur1 = head;cur2 = copy_head;while(cur1){cur2->random = m[cur1->random];//通过联系链接cur1=cur1->next;cur2=cur2->next;}return copy_head;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136387.shtml

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

相关文章

技术分享 | web自动化测试-PageObject 设计模式

为 UI 页面写测试用例时&#xff08;比如 web 页面&#xff0c;移动端页面&#xff09;&#xff0c;测试用例会存在大量元素和操作细节。当 UI 变化时&#xff0c;测试用例也要跟着变化&#xff0c; PageObject 很好的解决了这个问题。 使用 UI 自动化测试工具时&#xff08;包…

ppt聚光灯效果

1.放入三张图片内容或其他 2.全选复制成图片 3.设置黑色矩形&#xff0c;透明度30% 4.粘贴复制后的图片&#xff0c;制定图层 5.插入椭圆&#xff0c;先选中矩形&#xff0c;再选中椭圆&#xff0c;点击绘图工具&#xff0c;选择相交即可&#xff08;关键&#xff09;

Spring Boot 请求/actuator/beans 无法访问 返回404

问题复现 在保证项目加入了spring-boot-starter-actuator依赖&#xff0c;并成功启动后。通过浏览器进行访问&#xff0c;返回如下图结果&#xff1a; 问题排查 1. 查看日志 从日志中可以看到基于路径’/actuator’下只暴露了一个端点 2. 访问http://localhost:8080/actua…

安卓常见设计模式2------构建者模式(Kotlin版)

1. W1 是什么&#xff0c;什么是构建者模式&#xff1f; 构建者模式&#xff08;Builder Pattern&#xff09;是一种创建复杂对象的设计模式。它通过使用链式调用的方式&#xff0c;逐步构建对象&#xff0c;使得代码更易读、可维护&#xff0c;并且可以处理许多可选参数的情况…

C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换

效果1 效果2 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent();}string fileFilter "*.*…

1. Collection,List, Map, Queue

1. java集合框架体系结构图 2. Collection派生的子接口 其中最重要的子接口是&#xff1a; 1&#xff09;List 表示有序可重复列表&#xff0c;重要的实现类有&#xff1a;ArrayList, LinkedList ArrayList特点&#xff1a;底层数组实现&#xff0c;随机查找快&#xff0c;增删…

facebook分享-错误记录

无法拉起分享 "code":30000,"msg":"fail:API_ERROR: API_ERROR" 1.确认facebook的app_id是否一致 2.确认是否在app_id应用的白名单里&#xff0c;注册meta开发者&#xff0c;然后把主页的user_id给管理员加 A ContentProvider for this app was…

【unity】ComputeShader的学习使用

ComputeShader 文章目录 ComputeShader一、学习链接二、案例学习1.FallingSand2.Fluid_2D 一、学习链接 王江荣&#xff1a;Compute Shader的基础介绍与使用 用GPU代替CPU进行计算&#xff1a; 定义核函数&#xff1a;可以定义很多个&#xff0c;最终会在GPU中被执行 #prag…

小程序发成绩

在这个数字化快速发展的时代&#xff0c;让学生能够方便快捷地获取自己的成绩已经成为一项基本的需求。那么&#xff0c;如何实现这一目标呢&#xff1f;对于许多老师来说&#xff0c;可能首先想到的是使用各种代码或者Excel来发布成绩查询。今天&#xff0c;我们就来探讨一下这…

Salesforce使用的数据库是什么

Salesforce使用了多种不同的数据库技术来支持其云端CRM&#xff08;客户关系管理&#xff09;服务。其中最显著的数据库技术是它自己的多租户数据库系统&#xff0c;称为"Salesforce数据库"或"Force.com数据库"。以下是关于Salesforce数据库的一些关键特点…

基于SSM的劳务外包管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

人工智能-深度学习之延后初始化

到目前为止&#xff0c;我们忽略了建立网络时需要做的以下这些事情&#xff1a; 我们定义了网络架构&#xff0c;但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时&#xff0c;甚至没有足够的信息来确定模型应该包含多少参数。 有些读者可…

RK3568平台开发系列讲解(音视频篇)RTMP 推流

🚀返回专栏总目录 文章目录 一、RTMP 的工作原理二、RTMP 流媒体服务框架2.1、Nginx 流媒体服务器2.2、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、 WebRTC流媒体传输协议等。 R…

基于SSM的图书管理借阅系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

k8s configMap挂载(项目配置文件放到configMap中,不同环境不同配置)

背景说明 项目对接配置文件加密&#xff0c;比如数据库密码、redis密码等。但是密文只能放到指定的配置文件中(important.properties)&#xff0c;该配置文件又不能接收环境变量&#xff0c;所以就很难区分不同环境的不同配置&#xff08;不同环境的数据库密码、redis密码一般…

easyscholar配置秘钥连接Zotero-style,更方便的了解文献!

如果你不知道什么是easyScholar,以及怎么安装easyScholar? 请参见文章 easyScholar 一、easyscholar配置秘钥 1.首先打开easyscholar插件&#xff0c;并登录 2.点击自定义数据集 3.依次点击 用户信息-开放接口 4.点击刷新 5.在Zoter中 编辑-首选项-高级-编辑器 6.点击…

C语言中一维指针、二维指针和三维指针

指针可以指向一份普通类型的数据&#xff0c;例如 int、double、char 等&#xff0c;也可以指向一份指针类型的数据&#xff0c;例如 int *、double *、char * 等。 如果一个指针指向的是另外一个指针&#xff0c;我们就称它为二级指针&#xff0c;或者指向指针的指针。 假设…

MongoDB分页排序问题,本页排序与结果集排序

项目中有使用到MongoDB&#xff0c;由于比较高频查询与写入&#xff0c;出现了每次查询的结果集都会变的问题。 描述 我使用的是skiplimit的分页方式,模拟mysql的 limit 0,10去分页 由于出现了结果集变化的问题&#xff0c;我想着使用排序去固定返回的结果集&#xff0c;结果…

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址&#xff1a;PV-RCNN 论文代码&#xff1a;PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…