算法刷题-哈希表的总结
什么时候用数组、什么时候用map呢?
经常会混淆。
混淆1:例如有时候题目可能要求在一大堆元素里找目标元素,要求不能利用用过的字母,这就会让我想到只包含一个键值的set或者是map,但实际上忽略了字母(限定大小写的情况下)是只有26个字母的情况,那么这个时候限定了范围大小就可以用一个vector容器或者是直接int a[26],这样直接利用ASCII码的原理记录什么字母出现了几次,用一次减一个就OK了 例如用来判断有效异位单词和赎金信这样的题。
混淆2:同样是不让使用重复的元素,但这个元素是数字的情况下,例如是求几个数之和这样的情况,仍然是这几种情况,利用哈希表[target-某key]是否存在,前提也是要么记录了一些和出现的次数,那么如果有就可以返回在这一种相等的情况下有几次,或者需要索引的情况下,就用map这样的有键值对的,值就是存储对应元素的下标,找到是否存在之后,就可以获取她的下标二零
当然,有的地方用哈希表好像很合适,但实际上要设计去重之类的,像三数之和这样的题目,用双指针法更加合适。
混淆1 对应的题-有效异位单词、赎金信
赎金信题目:
给你两个字符串:ransomNote 和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。magazine
中的每个字符只能在 ransomNote
中使用一次。
有效异位单词:
就判断一个单词是不是另一个单词的字母重组的就行。
要点
这里当然就是记录出现的次数++,然后再另一个里面出现的次数–,如果出现了正值或者负值的情况,根据不同的题目判断。
混淆2 对应的题–两数之和
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个
整数,并返回它们的数组下标。
示例 1:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 2:
输入:nums = [3,3], target = 6
输出:[0,1]
要点
直接在一层遍历里完成两项任务,一个是查找哈希表是否存在[target-当前value]的键,一个是如果没找到就添加当前value。一个for完成两件事
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map<int,int> nums_map;for (int i = 0; i < nums.size(); i++) {auto it = nums_map.find(target-nums[i]);if ( it != nums_map.end()) {return { it->second, i};}nums_map.insert(pair<int,int> (nums[i], i));}return {};}
};
混淆2-四数相加||
给你四个整数数组 nums1、nums2、nums3 和 nums4
,数组长度都是 n
,请你计算有多少个元组 (i, j, k, l)
能满足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
要点
这个就是要求返回有多少个,那么键值对应的值就应该填入出现的次数。那么在本题里面,出现的次数就指的是前两个数组的不同下标元素相加的和出现的次数了。
class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int count = 0;unordered_map<int, int> GroupAandB;for (int a : nums1) {for (int b : nums2) {GroupAandB[a + b]++;}}for (int c : nums3) {for (int d : nums4) {if (GroupAandB.find(0-(c + d)) != GroupAandB.end()) {count += GroupAandB[0 - (c + d)]; //加上键值}}}return count;}
};
相关文章:
算法刷题-哈希表的总结
什么时候用数组、什么时候用map呢? 经常会混淆。 混淆1:例如有时候题目可能要求在一大堆元素里找目标元素,要求不能利用用过的字母,这就会让我想到只包含一个键值的set或者是map,但实际上忽略了字母(限定大…...
如何通过 Homebrew 安装 Qt 并配置环境变量
如何通过 Homebrew 安装 Qt 并配置环境变量 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形界面应用。本文将详细介绍如何在 macOS 上通过 Homebrew 安装 Qt 并配置环境变量,以便在终端和 Qt Creator 中使用 Qt 工具。 步骤 1:安装 Ho…...
RESTful 的特点与普通 Web API 的区别
RESTful 是一种设计风格,而不仅仅是普通的 Web API。它遵循一些特定的原则和约束,使得 API 更加简洁、可扩展和易于理解。以下是 RESTful 的特点,以及与普通 Web API 的区别: RESTful 的特点 1. 资源导向 RESTful API 的核心是资…...
Java和JavaScript当中的json对象和json字符串分别讲解
Java和JavaScript当中的json对象和json字符串分别讲解 一、Java当中的json对象和json字符串 在 Java 中,JSON 对象和 JSON 字符串有不同的表示和操作方式。 1. JSON 对象: 如果你使用的是 org.json 库,创建 JSON 对象的代码如下࿱…...
ARM64 Trust Firmware [四]
完成第二阶段 BL2 的操作后就加载并进入 BL31,BL31 位于 DRAM 中,EL3 模式。除了做架构初始化和平台初始化外,还做了如下工作: 基本硬件初始化,比如 GIC,串口,timer 等;PSCI 服务的…...
CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台
❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker,这是一个基于网络的计算平台,旨在简化和加速 EnzyDock 对接模拟的设置过程&…...
Sklearn常用算法及建模流程总结
Scikit-learn(简称 Sklearn)是 Python 中最流行的机器学习库之一,提供了丰富的算法和工具用于数据预处理、模型训练、评估和调优。下面整理了一些常用算法及建模流程,供大家参考学习。 1.常用算法分类 1. 监督学习(S…...
华为IPD简介
创作灵感 现在“熟悉华为IPD”经常出现在高级招聘岗位能力要求上,于是作者写下此文章以此巩固相关知识储备 名词解释 华为IPD(Integrated Product Development,集成产品开发)是华为引入并优化的一套产品开发管理体系࿰…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑰】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase17 作者:车端域控测试工程师 更新日期:2025年02月19日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-017测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
html网络安全工具源码 网络安全前端
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 前端常见的网络安全包括:xss(跨站脚本攻击)、csrf(跨站请求伪造)、sql注入攻击等。 1)跨站…...
广西壮族自治区园区投促中心党委书记陶德文率团到访深兰科技
2月16日,广西壮族自治区园区投促中心党委书记、主任,自治区园区办党组成员陶德文率团来到深兰科技集团上海总部考察调研,并与深兰科技集团创始人、董事长陈海波等集团管理层座谈交流,双方围绕深兰科技人工智能项目落地广西的相关事…...
vue3创建项目
vue3创建项目 在 Vue 3 中创建项目通常涉及到使用 Vue CLI 或者 Vite。 Vue CLI 是官方推荐的脚手架工具,而 Vite 是近年来非常流行的现代前端开发工具,它提供了更快的热模块更新(HMR)和优化的开发服务器。 一、使用 Vue CLI 创…...
MySQL5.7 创建用户并授予超管权限脚本
记录MySQL5.7 创建新用户并授予超管权限脚本 用户与密码可任意设置 创建用户并设置密码 CREATE USER zhangsan % identified by 123456oo;修改用户密码 UPDATE USER set authentication_stringpassword("Abc123!") where user"zhangsan ";授予用户超管权…...
ESP32鼠标驱动(ble hid device_demo)【ESP32指向鼠标】
ESP32鼠标驱动(ble hid device_demo)【ESP32指向鼠标】 我使用的vscode开发esp32,用的是ESP-IDF v5.12固件,其提供了很多例程,在搜索里面输入“ESP-IDF: Show Examples Projects”,便可看到例程,如下图所示࿰…...
CSDN文章质量分查询系统【赠python爬虫、提分攻略】
CSDN文章质量分查询系统 https://www.csdn.net/qc 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链接-----> https://www.csdn.net/qc <------点击链接 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链…...
vscode远程报错:Remote host key has changed,...
重装了Ubuntu系统之后,由20.04改为22.04,再用vscode远程,就出现了以上报错。 亲测有效的办法 gedit ~/.ssh/known_hosts 打开这个配置文件 删掉与之匹配的那一行,不知道删哪一行的话,就打开第一行这个 /.ssh/confi…...
【核心算法篇一】《DeepSeek视觉引擎:YOLOv8模型迁移实战》
某天深夜,算法工程师小王在办公室突然跳起来大喊:"mAP从0.91降到0.87了!"整个团队瞬间惊醒——这是正在将YOLOv8迁移到智能质检产线时遭遇的惊魂时刻。本文将以DeepSeek视觉引擎的实战经验,带你穿越模型迁移的雷区,揭秘工业级落地的核心技巧。(文末附完整训练参…...
如何在 ConstraintLayout 中将 ViewPager 始终置于 ll_title 的下方
关于如何在 ConstraintLayout 中将 ViewPager 始终置于 ll_title标题栏 的下方。。 如何将 ViewPager 始终置于 ll_title 下方 在 ConstraintLayout 中,可以通过约束来实现 ViewPager 始终位于 ll_title 标题栏的下方。以下是修改后的布局代码: <?…...
docker 安装 Rabbitmq 详解
在平常的开发工作中,我们经常会使用到 rabbitmq,rabbitmq 主要可以进行应用解耦、异步通信、流量削峰、负载均衡、消息持久化、死信队列等。比如商城系统,下单后,通过消息队列通知库存系统、积分系统、物流系统等。发送短信时通过…...
51单片机学习之旅——在LCD1602上显示时钟
新建工程 打开软件 LCD1602模块代码添加 因为我们在LCD1602上显示时钟,因此我们需要添加LCD1602的模块代码 跳转到这条博客51单片机学习之旅——模块化编程集_51单片机ruminant-CSDN博客,复制相关代码跳转到这条博客51单片机学习之旅——模块化编程集…...
pytest asyncio 支持插件 pytest-asyncio
pytest 是 Python 测试框架,但其不支持基于 asyncio 的异步程序(例如,测试 FastAPI 异步代码),pytest-asyncio 是一个 pytest 插件,该插件赋予 pytest 可以测试使用 asyncio 库代码的能力。 https://github…...
全平台搭载旭日5!科沃斯GOAT智能割草机器人全新系列正式开售
要闻 近日,科沃斯全新发布的GOAT A Series 和 GOAT O Series割草机器人,将在多国市场正式上市发售。作为业界最强的割草机器人产品之一,GOAT致力为割草机带来基于机器人视觉的专业定位解决方案。科沃斯GOAT全新系列产品全平台搭载地瓜机器人…...
“深入浅出”系列之C++:(8)libevent 库
libevent 是一个开源的高性能事件通知库,它为处理异步 I/O 事件提供了一个通用的接口。该库采用事件驱动的编程模型,允许开发者在多个 I/O 源(如套接字、文件描述符等)上监听事件,并在事件发生时执行相应的回调函数。l…...
备战蓝桥杯 Day4 差分
差分(修改区间后查询) 1.要点 a[0]0; for(int i1;i<n;i){diff[i]a[i]-a[i-1];//构建差分数组 } //原数组a区间[l,r]全部加上x diff[l]x;//还原a数组[l,n]全部加上x diff[r1]-x;//还原a数组[r1,n]全部减去x for(int i1;i<n;i){a[i]a[i-1]diff[i]; }实现多次修改完后多次…...
一个前端,如何同时联调多个后端
文章目录 场景解决方案思路实现步骤创建项目目标前端配置安装cross-env配置vue.config.js配置package.json 测试 场景 一个前端,需要同时和N个后端联调 一个需求里有若干个模块,分别给不同的后端开发,前端需要和N个后端联调 本地开启一个端…...
Scrapy:DownloaderAwarePriorityQueue队列设计详解
DownloaderAwarePriorityQueue 学习笔记 1. 简介 DownloaderAwarePriorityQueue 是 Scrapy 中一个高级的优先级队列实现,它不仅考虑请求的优先级,还会考虑下载器的负载情况。这个队列为每个域名(slot)维护独立的优先级队列&#…...
GoFound 与 MySQL 集成优化方案
GoFound 与 MySQL 集成优化方案 1. 明确需求 文章信息存储在 MySQL 数据库中。使用 GoFound 实现全文搜索功能。搜索时,先从 GoFound 中获取匹配的文章 ID,然后从 MySQL 中查询完整的文章信息。 2. 优化思路 数据同步:将 MySQL 中的文章数…...
Unity 打开摄像头 并显示在UI
需求: 打开相机并显示在UI上 效果: 注意: 电脑可能有多个摄像头,注意名称 代码: using System; using System.Linq; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; #if UNITY_EDITOR using UnityEditor; #endifname…...
PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...
Word中接入大模型教程
前言 为什么要在word中接入大模型呢? 个人觉得最大的意义就是不用来回切换与复制粘贴了吧。 今天分享一下昨天实践的在word中接入大模型的教程。 在word中接入大模型最简单的方式就是使用vba。 vba代码要做的事,拆分一下就是: 获取用户…...
Vue前端开发-Vant介绍,安装部署
Vant 是有赞前端团队开源的移动端组件库,适用于手机端的页面,它体积轻量,Vant组件的平均体积仅有8.8KB,压缩后只有1KB;除体积轻量外,可定制又是它的另外一个特点,它不仅提供基础的UI组件,还提供…...
Linux中线程创建,线程退出,线程接合
线程的简单了解 之前我们了解过 task_struct 是用于描述进程的核心数据结构。它包含了一个进程的所有重要信息,并且在进程的生命周期内保持更新。我们想要获取进程相关信息往往从这里得到。 在Linux中,线程的实现方式与进程类似,每个线程都…...
教学资料档案管理系统
本系统构建 JAVA 体系的后端系统,围绕以安全,可靠,高速,健壮,易于扩展为目标的方向进行开发,在阿里等开源库的基础上实现提供教学资料档案的管理系统的后端接口的微服务架构系统。 功能包含:系…...
《Stable Diffusion绘画完全指南:从入门到精通的Prompt设计艺术》-配套代码示例
第一章:模型加载与基础生成 1.1 基础模型加载 from diffusers import StableDiffusionPipeline import torch# 加载SD 1.5基础模型(FP32精度) pipe StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",…...
代码随想录算法【Day50】
Day50 图的基础知识 图的种类:有向图,无向图,带权值的图 度 有多少条边连接这个节点就是几度 出度:从该节点指到别的节点的边 入度:与“出度”相反 连通性 一般在无向图中研究 连通图:任何一个节点都…...
禁止WPS强制打开PDF文件
原文网址:禁止WPS强制打开PDF文件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何避免WPS强制打开PDF文件。 方法 1.删除注册表里.pdf的WPS绑定 WinR,输入:regedit,回车。找到:HKEY_CLASSES_ROOT\.pdf删除KWPS.PDF…...
DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
DeepSeek官网 目前阶段,DeepSeek R1是不能直接生成图片的,但可以通过优化文本后转换为SVG或HTML代码,再保存为图片。另外,Janus-Pro是DeepSeek的多模态模型,支持文生图,但需要本地部署或者使用第三方工具。…...
深入解析NoSQL数据库:从文档存储到图数据库的全场景实践
title: 深入解析NoSQL数据库:从文档存储到图数据库的全场景实践 date: 2025/2/19 updated: 2025/2/19 author: cmdragon excerpt: 通过电商、社交网络、物联网等12个行业场景,结合MongoDB聚合管道、Redis Stream实时处理、Cassandra SSTable存储引擎、Neo4j路径遍历算法等42…...
大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(3)
大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(3) 前言本篇摘要11. 使用transformers.agents构建Gradio UI11.3 创建和使用工具Tools11.3.1 默认工具箱与load_tool11.3.2 创建新工具11.3.3 管理代理的工具箱toolbox11.3…...
Mybatis-Plus的使用
1. MyBatis-Plus介绍 MyBatis-Plus(简称 MP)是⼀个MyBatis的增强⼯具,在MyBatis的基础上只做增强不做改变,为简化开 发.提⾼效率⽽⽣ 特性: • 润物⽆声:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑. • 效率⾄上:只需简单配置&#…...
基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
什么是神经网络?
0 前言 神经网络是一种人工智能方法,用于教计算机以受人脑启发的方式处理数据。这是一种机器学习过程,称为深度学习,它使用类似于人脑的分层结构中的互连节点或神经元。它可以创建自适应系统,计算机使用该系统来从错误中进行学习…...
【第12章:深度学习与伦理、隐私—12.1 AI伦理原则与偏见检测的方法与实践】
凌晨三点,某法院的AI量刑系统突然将一桩盗窃案的刑期预测从6个月改为3年——只因被告人的居住地邮编关联到某个少数族裔聚居区。这场静默的算法叛乱,揭开了AI伦理问题的冰山一角。 一、AI伦理的五大天条 1.1 公平性原则:算法没有"完美中立" ![不同算法在COMPAS…...
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。充分利用现有…...
Redis过期机制
const (cacheDuration 24 * time.Hour )func SetToCache(rdb *redis.Client, key string, data []byte) error {return rdb.Set(rdb.Context(), key, data, cacheDuration).Err() }以上函数中的rdb.Set(rdb.Context(), key, data, cacheDuration).Err()中的 cacheDuration一旦…...
Android ListPreference使用
Android ListPreference使用 参考 添加链接描述 导入 androidx.preference.ListPreferenceListPreference是Android中的一个Preference子类,用于显示一个可选择的列表,并且可以保存用户所选择的值。它继承自DialogPreference,可以在用户点击时弹出一个对话框,显示可选择的…...
10分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
作者:后端小肥肠 目录 1. 前言 为什么选择DeepSeek? 本文技术栈 2. 环境准备 2.1. 后端项目初始化 2.2. 前端项目初始化 3. 后端服务开发 3.1. 配置文件 3.2. 核心服务实现 4. 前端服务开发 4.1. 聊天组件ChatWindow.vue开发 5. 效果展示及源…...
瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库
目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…...
泰山派RK3566移植QT,动鼠标时出现屏幕闪烁
总结: 交叉编译到 泰山派rk3566跑调海康摄像头的qt应用程序失败了。 X11无效窗口。 移植QT注意 屏幕分辨率不要改。改了执行QT的时候,framebuffer识别不出设备。 命令行安装QT-Creator sudo install 类似的指令安装Qt-Creator时,可能找不到编…...
一周学会Flask3 Python Web开发-post请求与参数获取
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式,我们可以在methods属性里配置…...