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

【力扣一轮】字符串异位 数组并集

先验知识记录:

遇到哈希问题,想到三种数据结构:

①数组:适用于哈希值比较小,范围较小,

②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;
}

相关文章:

【力扣一轮】字符串异位 数组并集

先验知识记录&#xff1a; 遇到哈希问题&#xff0c;想到三种数据结构&#xff1a; ①数组&#xff1a;适用于哈希值比较小&#xff0c;范围较小&#xff0c; ②set&#xff1a;适用于哈希值较大。 ③map&#xff1a;如果需要用到键值对&#xff0c;则用之。 242.有效的字母…...

完美解决flex布局换行后最后一行不能和保持和满行的间距一致,或者左对齐的尴尬情景

display: grid; 是 CSS3 引入的一个非常强大的布局系统&#xff0c;允许你以二维网格的形式布局内容。这种布局模型在设计和构建复杂的网页布局时非常有用&#xff0c;因为它提供了对行和列的完全控制。 以下是关于 display: grid; 的一些基本概念和特性的讲解&#xff1a; 1…...

面试准备-项目【面试准备】

面试准备-项目【面试准备】 前言面试准备自我介绍&#xff1a;项目介绍&#xff1a; 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别…...

迭代器 增强for循环

迭代器原理 简单来说,迭代器就是一种可以访问集合的方式&#xff0c;就像一个游标或者指针&#xff0c;可以逐一查看集合&#xff08;映射、列表&#xff09;中的元素。 想象一下你有一张清单&#xff0c;上面列着你需要做的事情&#xff0c;但是你只能一次看一项。迭代器就像…...

Ubuntu系统版本查看办法

Ubuntu系统版本查看办法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看内核版本6. 使用 neofetch 命令&#xff08;如果已安装&#xff09;总结 在 Ubuntu 操作系统中&#xff0c;查看当前系统版本的详细信息可…...

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只能关联在一个接口上&#xff0c;一个接口上可以学习多个MAC *mac地址漂移&#xff1a;mac表中&#xff0c;mac地址的出接口从一个端口变为另一个端口的现象。 造成mac漂移的原因…...

参考文献交叉引用两个文献,逗号隔开

1.引用两个参考文献&#xff0c;定位到word正文中需要引用的位置&#xff0c;然后插入-交叉引用&#xff0c;引好文献 2.选中两个参考文献&#xff0c;切换域代码&#xff0c;然后进行修改&#xff1a; 改为 上面的两张图片中的点是空格的含义&#xff0c;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请求权限问题

需求&#xff1a;webview可以通过录音后语音转文字。 使用插件&#xff1a; permission_handler: ^11.0.1 webview_flutter: ^4.7.0 代码如下&#xff1a; 1.添加权限 添加安卓的权限&#xff1a; android/app/src/main/AndroidManifest.xml <uses-permission android…...

rocketmq 学习二 基本概念

教程&#xff1a;基本概念 | RocketMQ 视频教程 https://www.bilibili.com/video/BV1d5411y7UW?vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 版本&#xff1a;5.0 一 基本概念 1.1 生产者/Producer 1.1.1 定义 消息发布者。是构建并传输消息到服务端的运行实体。…...

C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题

vector&#xff08;上&#xff09;&#xff1a;C初阶学习第八弹——探索STL奥秘&#xff08;三&#xff09;——深入刨析vector的使用-CSDN博客 vector&#xff08;中&#xff09;&#xff1a;C初阶学习第九弹——探索STL奥秘&#xff08;四&#xff09;——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是一本多学科期刊&#xff0c;专注于公共卫生创新与技术的交叉领域&#xff0c;包括公共卫生信息学、监测&#xff08;监测系统和快速报告&#xff…...

Flutter 中的 AnimatedThere 小部件:全面指南

Flutter 中的 AnimatedThere 小部件&#xff1a;全面指南 在Flutter中&#xff0c;动画是增强用户体验的强大工具。虽然Flutter没有一个名为AnimatedThere的官方小部件&#xff0c;但我们可以根据常见的动画模式来构建一个类似的自定义动画效果。本文将指导您如何使用Flutter的…...

2024南京智博会:展示国内外前沿科技成果,推动智能产业快速发展

2024南京智博会&#xff0c;一场科技盛宴的盛宴&#xff0c;汇聚了全球人工智能、物联网、大数据、机器人、自动驾驶等领域的最新技术和创新理念。作为一场国际性的盛会&#xff0c;它不仅展示了国内外前沿科技成果&#xff0c;更为参展者搭建了一个交流合作的平台&#xff0c;…...

基于springboot实现的校园博客系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…...

人从胚胎开始就要交税,直到死亡,是这样吗?

文章目录 梗概税收的基本概念从胚胎到死亡的税收分析胚胎到出生出生到成年成年到死亡 总结 梗概 人从胚胎阶段开始交税直到死亡&#xff0c;这个观点听起来有些戏剧化&#xff0c;但如果我们广义地理解“交税”这个概念&#xff0c;可以从不同的角度进行探讨。实际上&#xff…...

c语言指针入门(二)

今天学习了指针的两个常用场景&#xff0c;在此记录&#xff0c;以便后续查看。 场景1&#xff1a;传数组 在c语言中&#xff0c;我们在定义函数的时候是没有办法直接传一个数组进去的&#xff0c;为了解决这个问题&#xff0c;我们一般将数组的名称当作一个指针参数传入到函数…...

一篇讲透排序算法之插入排序and选择排序

1.插入排序 1.1算法思想 先将数组的第一个元素当作有序&#xff0c;让其后一个元素与其比较&#xff0c;如果比第一个元素小则互换位置&#xff0c;之后再将前两个元素当作有序的&#xff0c;让第三个元素与前两个元素倒着依次进行比较&#xff0c;如果第三个元素比第二个元素…...

CompletableFuture的主要用途是什么?

CompletableFuture 的主要用途是为复杂的异步编程模型提供一种更简单&#xff0c;更具可读性的方式。它主要用于以下几个方面&#xff1a; 非阻塞计算&#xff1a;CompletableFuture 为处理高延迟的计算任务提供了非阻塞的解决方案。你可以启动一个计算任务&#xff0c;而不需要…...

QtCreator,动态曲线实例

样式图&#xff1a; .ui 在sloem1.ui文件中&#xff0c;拖入一个label控件&#xff0c; 头文件.h #include "QtGui/QPainter.h" #include "QtCore/QTimer.h"protected:bool eventFilter(QObject *obj,QEvent *event);void labelPaint();public slots: /…...

Model-Based Pose Estimation for Rigid Objects(基于SIFT)

6D目标检测工程落地需求的小算力算法&#xff0c;本文具有借鉴意义&#xff0c;但对于特征点少的目标不太好用。 摘要 在多个实际应用中&#xff0c;经常会遇到确定图像中出现的物体姿态的问题。处理这一挑战的最有效策略是按照基于模型的范式进行&#xff0c;这涉及构建物体…...

STM32自己从零开始实操02:输入部分原理图

一、触摸按键 1.1指路 项目需求&#xff1a; 4个触摸按键&#xff0c;主控芯片 TTP224N-BSBN&#xff08;嘉立创&#xff0c;封装 TSSOP-16&#xff09;&#xff0c;接入到 STM32 的 PE0&#xff0c;PE1&#xff0c;PE2&#xff0c;PE3。 1.2走路 1.2.1数据手册重要信息提…...

JavaScript异步编程——03-Ajax传输json和XML的技术文档

JavaScript异步编程——03-Ajax传输json和XML的技术文档 目录 JavaScript异步编程——03-Ajax传输json和XML的技术文档 一、引言 二、Ajax简介 三、Ajax传输JSON数据 四、Ajax传输XML数据 五、总结 一、引言 在现代Web开发中&#xff0c;Ajax技术已经成为实现前后端数据交…...

移动端常用meta

在移动端开发中&#xff0c;<meta> 标签用于提供关于HTML文档的元数据&#xff0c;这些元数据不会显示在页面上&#xff0c;但可以被浏览器解析&#xff0c;用于控制页面的行为和外观。以下是一些在移动端开发中常用的 标签&#xff1a; 1. 视口设置 这是移动端开发中最…...

C++_C++11的学习

1. 统一的列表初始化 1.1&#xff5b;&#xff5d;初始化 在C98 中&#xff0c;标准就已经允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。而到了C11&#xff0c;标准扩大了用大括号括起的列表 ( 初始化列表 )的使用范围&#xff0c;使其能适用于所有的内…...

RAC11G参数修改错误导致启库失败处理

问题描述 部署完一套3节点的11g RAC后&#xff0c;进行了内存的参数优化&#xff0c;优化时忘记了先备份参数文件&#xff0c;忘记了计算内存参数眼盲的复制粘贴执行内存优化sql导致优化后重启实例启动失败。艾&#xff0c;由于粗心自己给自己挖了个坑。 切记更改参数步骤&am…...