当前位置: 首页 > news >正文

复习Day08:哈希表part01:242.有效的字母异位词、349. 两个数组的交集、1. 两数之和、160. 相交链表

之前的blog:https://blog.csdn.net/weixin_43303286/article/details/131765317

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带模拟面试环境。

哈希表章节的题目思路很清晰,主要是C++中的写法。

242.有效的字母异位词

这题就是字典加加减减的事,一看就有思路了。使用数组代替hashtable

349. 两个数组的交集

这里注意在C++的std::unordered_set中,查找一个元素的平均时间复杂度是O(1)。这是因为unordered_set是使用哈希表实现的,哈希表提供了常数时间的平均查找时间,前提是哈希函数能够将元素均匀地分布在哈希表的桶中,并且没有发生哈希冲突。

在C++的std::unordered_set中,你可以使用find函数来查找元素。find函数返回一个迭代器,指向找到的元素,如果元素不存在,则返回unordered_setend()迭代器。

在C++的std::unordered_set中插入元素可以使用insert函数

我的第一个解法使用两个set:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> sets(nums1.begin(), nums1.end());unordered_set<int> res;for(int num: nums2){if(sets.find(num) != sets.end()){res.insert(num);}}return vector<int> (res.begin(), res.end());}
};

内存爆了,看看之前的解法:感觉这个时间复杂度更差hhh

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_map<int,int> table;set<int> res;for(int num : nums1){table[num]++;}for(int num : nums2){if(table[num] > 0){res.insert(num);}}vector<int> res1(res.begin(),res.end());//使用迭代器构建vector。return res1;}

1. 两数之和

使用hashtable,其中key是值,value是对应的下标

这里注意使用iter取hash表中的迭代器,it->second表示value,没有括号。

160. 相交链表

二刷有点思路了,先遍历一遍求长度,然后移动短的跟长的对齐,再依次比较相等就返回(这里比的不是值而是指针):

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* curA = headA;ListNode* curB = headB;int lengthA = 0, lengthB = 0;while(curA != nullptr){lengthA++;curA = curA->next;}while(curB != nullptr){lengthB++;curB = curB->next;}//这里要重新开始遍历,要对curA curB进行重新赋值curA = headA;curB = headB;//假设A为短的链表,B为长的链表if(lengthA > lengthB){swap(lengthA,lengthB);swap(curA,curB);}int gap = lengthB - lengthA;while(gap--){curB = curB->next;}while(curA != nullptr){if(curA == curB){return curA;}curA = curA->next;curB = curB->next;}return nullptr;}
};
z

相关文章:

复习Day08:哈希表part01:242.有效的字母异位词、349. 两个数组的交集、1. 两数之和、160. 相交链表

之前的blog&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131765317 我用的方法是在leetcode再过一遍例题&#xff0c;明显会的就复制粘贴&#xff0c;之前没写出来就重写&#xff0c;然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用…...

用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

本篇文章将介绍如何使用开源的测试报告生成框架 Allure 生成规范、格式统一、美观的测试报告。 通过这篇文章的介绍&#xff0c;你将能够&#xff1a; 将 Allure 与 Pytest 测试框架相结合&#xff1b; 如何定制化测试报告内容 执行测试之后&#xff0c;生成 Allure 格式的测…...

Python字符串索引解码乱码谜题

输入数行“数字字母”字符组成的乱码字符串&#xff0c;根据谜题规则解码出乱码字符串中隐藏的单词信息。 (本笔记适合熟悉python字符串索引操作的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”…...

协议栈——收发数据(拼接网络包,自动重发,滑动窗口机制)

目录 协议栈何时发送数据&#xff5e; 数据长度 IP模块的分片功能 发送频率 网络包序号&#xff5e;利用syn拼接网络包ack确认网络包完整 确定偏移量 服务器ack确定收到数据总长度 序号作用 双端告知各自序号 协议栈自动重发机制 大致流程 ack等待时间如何调整 是…...

传输层协议——TCP、UDP

目录 1、UDP 协议&#xff08;用户数据报协议&#xff09; 协议特点 报文首部格式 2、TCP 协议&#xff08;传输控制协议&#xff09; 协议特点 报文首部格式 TCP连接建立时的三次握手 TCP拆除连接的四次挥手 TCP的流量控制 TCP的拥塞控制 3、传输层端口号 三类端口…...

优化您的Spring应用程序:缓存注解的精要指南

优化您的Spring应用程序&#xff1a;缓存注解的精要指南 前言详细说明1. Cacheable&#xff1a;2. CacheEvict&#xff1a;3. CachePut&#xff1a;4. Caching&#xff1a;5. CacheConfig&#xff1a; 项目中的实现前提使用 前言 当我们构建和运行Spring应用程序时&#xff0c…...

Java之原子性问题的解决

2. 原子性 2.1 volatile-问题 代码分析 : package com.itheima.myvolatile; ​ public class Demo {public static void main(String[] args) {MyThread1 t1 new MyThread1();t1.setName("小路同学");t1.start(); ​MyThread2 t2 new MyThread2();t2.setName(&q…...

实时目标检测:基于YOLOv3和OpenCV的摄像头应用

一、前言 随着人工智能和计算机视觉技术的不断发展,目标检测成为了智能监控、自动驾驶、机器人等领域的关键技术之一。实时目标检测更是对系统的反应速度和准确度提出了更高的要求。本文介绍使用OpenCV和YOLOv3实现实时目标检测的方法,演示如何使用OpenCV调用YOLOv3模型进行…...

【软考】4.2 关系代数

《 关系代数 》 表和表之间的逻辑运算 笛卡尔积&#xff1a;S1 x S2 投影&#xff1a;π&#xff1b;选择某一列&#xff08;属性&#xff09;&#xff1b;一个关系R的投影操作结果也是一个关系&#xff0c;记作Πa&#xff0c;它由从关系R中选出的A列元素构成&#xff1b;选择…...

STM32F4学习笔记读取芯片UID和MAC地址

一、简介 在嵌入式设备开发过程中有时会需要为设备设置唯一的ID用以标识设备唯一&#xff0c;比如要求同一总线上的所有设备ID不能重复&#xff0c;要求设备具体唯一的MAC地址等等。每个STM32微控制器都自带一个96位的唯一ID&#xff0c;这个ID在任何情况下都是唯一且不允许修…...

webpack优化策略

这三点是webpack优化策略的一部分&#xff0c;具体解释如下&#xff1a; 优化正则匹配&#xff08;Test&#xff09;&#xff1a;在webpack的配置中&#xff0c;test属性是一个正则表达式&#xff0c;用于匹配需要应用该loader的文件的扩展名。在您提供的代码中&#xff0c;te…...

讲讲项目里的仪表盘编辑器(三)布局组件

布局容器处理 看完前面两章的讲解&#xff0c;我们对仪表盘系统有了一个大概的理解。接着我们讲讲更深入的应用。 上文讲解的编辑器只是局限于平铺的组件集。而在编辑器中&#xff0c;还会有一种组件是布局容器。它允许其他组件拖拽进入在里面形成自己的一套布局。典型的有分页…...

Linux- 后台运行符、nohup、disown

& &在Unix-like的操作系统&#xff08;如Linux和macOS&#xff09;的shell中&#xff0c;特别是在Bash这样的shell中&#xff0c;经常用作后台运行符号。让我们深入了解一下其功能和用法。 &作为后台运行符号&#xff1a; 基本用法: 当我们在一个命令或者一组命令…...

开发过程教学——交友小程序

交友小程序 1. 我的基本信息2. 我的人脉2.1 我的关注2.2 我的粉丝 3. 我的视频4. 我的相册 特别注意&#xff1a;由于小程序分包限制2M以内&#xff0c;所以要注意图片和视频的处理。 1. 我的基本信息 数据库表&#xff1a; 我的基本信息我的登录退出记录我的登录状态&#x…...

正则表达式 Regular Expression学习

该文章内容为以下视频的学习笔记&#xff1a; 10分钟快速掌握正则表达式_哔哩哔哩_bilibili正则表达式在线测试工具&#xff1a;https://regex101.com/, 视频播放量 441829、弹幕量 1076、点赞数 19330、投硬币枚数 13662、收藏人数 26242、转发人数 2768, 视频作者 奇乐编程学…...

代谢组学最常用到的数据分析方法(五)

代谢组学是一门对某一生物或细胞所有低分子质量代谢产物&#xff08;以相对分子质量<1000的有机和无机的代谢物为研究核心区&#xff09;进行分析的新兴学科。因此从复杂的代谢组学数据中确定与所研究的现象有关的代谢物&#xff0c;筛选出候选生物标记物成为代谢物组学研究…...

105.从前序与中序遍历序列构造二叉树

力扣题目链接(opens new window) 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; class Solution { public:Tr…...

分支定界、分支切割、分支定价的区别

目录 1.从原理的角度 &#xff08;1&#xff09;分支定界&#xff1a; &#xff08;2&#xff09;分支切割&#xff1a; &#xff08;3&#xff09;分支定价&#xff1a; 2.从分支树的角度 &#xff08;1&#xff09;分支定界 &#xff08;2&#xff09;分支切割 &…...

数字IC前端学习笔记:数字乘法器的优化设计(阵列乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 数字信号处理作为微处理器的核心部件&#xff0c;是决定着总体处理器性能的因素之一&#xff0c;而数字乘法器是最常见的一种数字信号处理电路。通常情况下&#…...

批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能

目录 1、批量删除wordpress文章修订版本/自动草稿残留数据&#xff08;3种方法&#xff09; 方法一&#xff1a;SQL命令批量删除 命令&#xff1a; 方法二&#xff1a;利用PHP代码来删除 方法三&#xff1a;利用数据库清理优化插件 WP Clean Up 或 WP Cleaner 批量删除 2…...

为什么92%的实时数仓项目在2025Q4突然转向AI原生平台?——奇点大会12家头部企业联合验证数据披露

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生实时计算平台&#xff1a;2026奇点智能技术大会流批一体实践 在2026奇点智能技术大会上&#xff0c;新一代AI原生实时计算平台正式发布&#xff0c;其核心突破在于将大模型推理调度、向量流式计算…...

避坑指南:LabVIEW做3D模型旋转动画时,90%的人会忽略的‘添加对象及引用’模式

LabVIEW 3D模型旋转动画深度解析&#xff1a;从"乱跑"到精准控制的进阶指南 在LabVIEW中创建3D模型旋转动画时&#xff0c;许多开发者都会遇到一个令人困惑的现象&#xff1a;明明只想让模型旋转&#xff0c;结果整个坐标系也跟着"翩翩起舞"。这种看似简单…...

Musa并行搜索工具:重塑信息检索工作流,提升多源对比效率

1. 项目概述&#xff1a;重新定义你的搜索工作流如果你和我一样&#xff0c;每天的工作都离不开在浏览器里反复横跳——为了一个技术问题&#xff0c;先在 Google 搜一遍&#xff0c;再去 Stack Overflow 看看有没有新答案&#xff0c;接着打开 ChatGPT 问问它的看法&#xff0…...

5分钟精通VinXiangQi:免费AI象棋助手的完整使用教程

5分钟精通VinXiangQi&#xff1a;免费AI象棋助手的完整使用教程 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi是一款基于YOLOv5深度学习技术的…...

从样式覆盖到版本升级:全面解析Antd表格固定列对齐问题的解决路径

1. 问题复现&#xff1a;当Antd表格固定列开始"跳舞" 第一次遇到Antd表格固定列错位问题时&#xff0c;我正喝着咖啡调试一个后台管理系统。突然发现表格右侧的固定列像被施了魔法——表头和内容列完全错开&#xff0c;活像跳着蹩脚的探戈。这种问题在Antd 3.x版本中…...

Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API&#xff0c;而是依托 Gemini 模型对自然语言指…...

别再算错了!等保2.0 2021版测评新规下,多系统/多机房得分计算保姆级教程

等保2.0 2021版多系统测评得分计算实战指南 当企业拥有多个机房或业务系统时&#xff0c;等保测评得分计算往往成为安全负责人最头疼的问题。2021版测评新规对多对象场景的计算方式进行了重要调整&#xff0c;这些变化直接影响最终得分和整改策略。本文将用真实案例拆解新旧计算…...

VCF 9.1 新特性:安装器与 Fleet Depot 支持 HTTP 无认证离线软件源

VMware Cloud Foundation(VCF)9.0 推出了统一软件仓库(Software Depot)&#xff0c;支持连接博通在线源或企业内部离线源。但在 9.0 中&#xff0c;离线源默认必须使用 HTTPS 基础认证&#xff0c;即使关闭 HTTPS 也依然需要认证&#xff0c;对纯内网环境很不友好。在 VCF 9.1…...

【研报 A111】中国生命科学AI行业发展蓝皮书:三阶段演进,2026年进入创造应用期

摘要&#xff1a;生命科学领域的AI赋能正迎来产业跃迁&#xff0c;AI4LS作为AIforScience最核心的应用场景&#xff0c;凭借处理多维复杂数据的天然优势&#xff0c;破解生命科学研发周期长、数据庞杂的痛点。当前行业正处于2.0预测阶段向3.0创造阶段的过渡期&#xff0c;Alpha…...

ChatGPT写论文被判AI怎么办?降AI率完整应对攻略+工具推荐!

ChatGPT写论文被判AI怎么办&#xff1f;降AI率完整应对攻略工具推荐&#xff01; ChatGPT 是 2022 年起最早被广泛使用的大模型&#xff0c;现在依然是不少留学生、研究生写英文论文/中文论文的首选。但它写出来的论文在 AIGC 检测平台&#xff08;Turnitin、知网英文模块、维普…...