【力扣一轮】字符串异位 数组并集
先验知识记录:
遇到哈希问题,想到三种数据结构:
①数组:适用于哈希值比较小,范围较小,
②set:适用于哈希值较大。
③map:如果需要用到键值对,则用之。
242.有效的字母异位符。
代码随想录链接
力扣链接
问题描述:
就是看两个字符串里面的字符是不是一样的,它们包含的字母以及个数是否是一致的。
思路:
因为单个字母总共有26个,所以建立数组形式的hash表。初始的hash表各个元素为0。经过字符串1的遍历后,hash表此时对应位置的字母数为字符串1的字母数。
再去遍历字符串2,如果遍历后的hash字母表存在字母对应的值不为0,则说明两个字符串包含的字母及字母数不同。如果每个hash表中每个位置的字母都为0,那么说明两个字符串中是异位关系。
注意,此时hash表中的字母位置,使用hash[string1[i]-'a']表示,这个很妙,因为这就相当于取出字符串每个字符对应到hash数组中且一一对应。
伪代码:
新建数组hash字母表
遍历字符串1对对应位置的hash字母表数值+1,表示字符串1中的hash字母表中字母个数
遍历字符串2对对应位置的hash字母表数值-1,表示字符串2中的hash字母表字母个数-字符串1中对应位置的字母个数
遍历hash字母表如果某个位置不为0说明两个字符串不是异味关系,返回false
遍历完成后,返回true
代码:
bool isAnagram(string s, string t) {int hash[26]={0};for(int i =0 ; i<s.size();i++){//遍历字符串s,使得s对应的字母表每个都有其对应次数。//s[i]就是s的每个字符,s[i]-‘a’代表了其对应哈希表的索引从0-25。字符串t同理。hash[s[i]-'a']++;}for(int i = 0 ; i< t.size() ; i++){hash[t[i]-'a']--;}for(int i = 0 ; i < 26; i++){if (hash[i]!=0){return false;}}return true;
}
349.两个数组的交集。
代码随想录链接
力扣链接
问题描述
两个数组,取交集,最后的结果要不重复。
思路:
有两种思路解决:
①set,将数组1的元素存入set去重。遍历数组2,如果元素在set中,则放入另个集合中,作为返回值返回。
遍历数组1,将数组中每个元素去重后放入number_set中
遍历数组2如果数组2中有元素在number_set中则放入result_set中
将result_set转为vector,作为返回值返回
②数组,力扣上有数组中单个元素大小限制,故将hash表数组设置为1000出头的大小。
新建hash表,大小为1000出头
遍历数组1对数组1的每个元素放到hash数组中,为1.
遍历数组2如果数组中有数字对应hash值为1将元素放入result_set中
将result_set转为vector,作为返回值返回
解法①代码:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> result_set;//方法1set<int> number_set ;for(int i = 0 ; i < nums1.size() ; i++){number_set.insert(nums1[i]);}for(int i = 0 ; i< nums2.size();i++){if (number_set.find(nums2[i])!= number_set.end()){result_set.insert(nums2[i]);}}vector <int> vt;vt.assign(result_set.begin(),result_set.end());return vt;
}
解法②代码:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> result_set;//方法2int hash[1001]={0};//遍历nums1,若有数字,则为1for(int i = 0 ; i < nums1.size() ; i++){hash[nums1[i]]=1;}for(int i = 0 ; i < nums2.size();i++){if (hash[nums2[i]]){result_set.insert(nums2[i]);}}vector <int> vt;vt.assign(result_set.begin(),result_set.end());return vt;
}
相关文章:
【力扣一轮】字符串异位 数组并集
先验知识记录: 遇到哈希问题,想到三种数据结构: ①数组:适用于哈希值比较小,范围较小, ②set:适用于哈希值较大。 ③map:如果需要用到键值对,则用之。 242.有效的字母…...
完美解决flex布局换行后最后一行不能和保持和满行的间距一致,或者左对齐的尴尬情景
display: grid; 是 CSS3 引入的一个非常强大的布局系统,允许你以二维网格的形式布局内容。这种布局模型在设计和构建复杂的网页布局时非常有用,因为它提供了对行和列的完全控制。 以下是关于 display: grid; 的一些基本概念和特性的讲解: 1…...
面试准备-项目【面试准备】
面试准备-项目【面试准备】 前言面试准备自我介绍:项目介绍: 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别…...
迭代器 增强for循环
迭代器原理 简单来说,迭代器就是一种可以访问集合的方式,就像一个游标或者指针,可以逐一查看集合(映射、列表)中的元素。 想象一下你有一张清单,上面列着你需要做的事情,但是你只能一次看一项。迭代器就像…...
Ubuntu系统版本查看办法
Ubuntu系统版本查看办法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看内核版本6. 使用 neofetch 命令(如果已安装)总结 在 Ubuntu 操作系统中,查看当前系统版本的详细信息可…...
HTML5 SVG技术应用
HTML5 SVG技术应用 目录 SVG属性SVG图像绘制 SVG路径SVG直线SVG矩形SVG圆形SVG椭圆SVG多边形SVG曲线SVG属性 SVG(Scalable Vector Graphics)元素拥有众多属性,这些属性用于定义图形的外观、位置、变换、交互等特性。 基本图形属 width 和 height: 定义SVG元素或图形的宽度…...
hcia datacom学习(10):交换机基础
1.二层交换机工作原理 1.1交换机的5种行为 查看mac地址表的命令为 dis mac-address *一个MAC只能关联在一个接口上,一个接口上可以学习多个MAC *mac地址漂移:mac表中,mac地址的出接口从一个端口变为另一个端口的现象。 造成mac漂移的原因…...
参考文献交叉引用两个文献,逗号隔开
1.引用两个参考文献,定位到word正文中需要引用的位置,然后插入-交叉引用,引好文献 2.选中两个参考文献,切换域代码,然后进行修改: 改为 上面的两张图片中的点是空格的含义,word中按ctrlshift8就…...
Linux多线程系列三: 生产者消费者模型,信号量使用,基于阻塞队列和环形队列的这两种生产者消费者代码的实现
Linux多线程系列三: 生产者消费者模型,信号量,基于阻塞队列和环形队列的这两种生产者消费者代码的实现 一.生产者消费者模型的理论1.现实生活中的生产者消费者模型2.多线程当中的生产者消费者模型3.理论 二.基于阻塞队列的生产者消费者模型的基础代码1.阻塞队列的介绍2.大致框架…...
Mongodb介绍及springboot集成增删改查
文章目录 1. MongoDB相关概念1.1 业务应用场景1.2 MongoDB简介1.3 体系结构1.4 数据模型1.5 MongoDB的特点 2. docker安装mongodb3. springboot集成3.1 文件结构3.2 增删改查3.2.1 增加insert3.2.2 保存save3.2.3 更新update3.2.4 查询3.2.5 删除 1. MongoDB相关概念 1.1 业务…...
JAVA 中 HTTP 基本认证(Basic Authentication)
目录 服务端这么做服务端告知客户端使用 Basic Authentication 方式进行认证服务端接收并处理客户端按照 Basic Authentication 方式发送的数据 客户端这么做如果客户端是浏览器如果客户端是 RestTemplat如果客户端是 HttpClient 其它参考 服务端这么做 服务端告知客户端使用 …...
【Flutter】 webview请求权限问题
需求:webview可以通过录音后语音转文字。 使用插件: permission_handler: ^11.0.1 webview_flutter: ^4.7.0 代码如下: 1.添加权限 添加安卓的权限: android/app/src/main/AndroidManifest.xml <uses-permission android…...
rocketmq 学习二 基本概念
教程:基本概念 | RocketMQ 视频教程 https://www.bilibili.com/video/BV1d5411y7UW?vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 版本:5.0 一 基本概念 1.1 生产者/Producer 1.1.1 定义 消息发布者。是构建并传输消息到服务端的运行实体。…...
C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题
vector(上):C初阶学习第八弹——探索STL奥秘(三)——深入刨析vector的使用-CSDN博客 vector(中):C初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和…...
C#自动实现缺陷数据增强
实现该自动缺陷数据增强需要以下几个方面: 1、正样本若干; 2、负样本若干(ps抠图,为png透明图像) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing...
JPHS-JMIR Public Health and Surveillance
文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 JMIR Public Health and Surveillance是一本多学科期刊,专注于公共卫生创新与技术的交叉领域,包括公共卫生信息学、监测(监测系统和快速报告ÿ…...
Flutter 中的 AnimatedThere 小部件:全面指南
Flutter 中的 AnimatedThere 小部件:全面指南 在Flutter中,动画是增强用户体验的强大工具。虽然Flutter没有一个名为AnimatedThere的官方小部件,但我们可以根据常见的动画模式来构建一个类似的自定义动画效果。本文将指导您如何使用Flutter的…...
2024南京智博会:展示国内外前沿科技成果,推动智能产业快速发展
2024南京智博会,一场科技盛宴的盛宴,汇聚了全球人工智能、物联网、大数据、机器人、自动驾驶等领域的最新技术和创新理念。作为一场国际性的盛会,它不仅展示了国内外前沿科技成果,更为参展者搭建了一个交流合作的平台,…...
基于springboot实现的校园博客系统
开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…...
人从胚胎开始就要交税,直到死亡,是这样吗?
文章目录 梗概税收的基本概念从胚胎到死亡的税收分析胚胎到出生出生到成年成年到死亡 总结 梗概 人从胚胎阶段开始交税直到死亡,这个观点听起来有些戏剧化,但如果我们广义地理解“交税”这个概念,可以从不同的角度进行探讨。实际上ÿ…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
