首页 > 其他分享 >哈希表

哈希表

时间:2024-03-07 15:13:26浏览次数:25  
标签:四数 哈希 nums 循环 数组 遍历

一、有效的字母异位词

思想一:数组排序

思想二:哈希表,建立长度为26的数组,利用ASCII码遍历s中字母出现的次数,并在t的遍历中依次减去出现次数,最后再遍历数组,全零则为异位词

思想三、map键值对,类似思想二

 

二、两数组交集

使用Set 数据结构,自动处理数组中的重复元素

 

  • Set 适用于存储唯一值,常用于去重和集合运算。
  • Map 适用于存储键值对,常用于建立键与值之间的映射关系。

 

三、快乐数

无限循环=>sum重复出现

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了

 

四、两数之和

暴力=>双重for循环先i遍j

需要判断一个元素是否出现在集合中,用哈希法。遍历j,用target-nums[j]结果是否在哈希表中判断

暴力双循环,每次两个数相加,用O(1)的时间得到O(1)的结果

哈希表,每次循环,用O(1)的时间得到O(n)的结果

 

五、四数相加

多数运算结果=指定值 =>两数相加

a+b+c+d=0 => c+d=0-a-b,四数->两数,四数分属不同数组,且要求输出次数,map的value值考虑存放次数

 

六、赎金信

数组在哈希表中的应用

 

七、三数之和

思想:双指针,先排序,再从头遍历,左边指遍历位置+1,右边指最右(双重循环,第一重遍历i的右边,第二重遍历左右指针)

去重操作,排序之后,注意对比的是前一个的值,(如果对比后一个会把第一组值丢掉,比如[-1, -1, 2])

在sum=0之后也要考虑去重,nums[l]=nums[l+1],以及nums[r]=nums[r-1]的情况都要移动相应指针

 

八、四数之和

三数之和的基础上再嵌套循环,但注意第二重循环的去重判断

标签:四数,哈希,nums,循环,数组,遍历
From: https://www.cnblogs.com/LiChaoyue-11/p/18056851

相关文章

  • Redis - 字典的实现与哈希冲突解决
    1.字典的实现edis的字典数据类型的实现主要分为两个部分:typedefstructdict{dictType*type;void*privdata;dicththt[2];longrehashidx;unsignedlongiterators;}dict;其中,type属性表示字典的类型,而privdata属性表示字典的私有数据,它是......
  • 哈希
    哈希树哈希,就是对于树的哈希#include<bits/stdc++.h>usingnamespacestd;#defineullunsignedlonglongintm,n;vector<int>son[60];ullshift(ullx){ x^=x<<13; x^=x>>7; x^=x<<17; returnx;}ullf[60],g[60];voiddfs1(intx){ f......
  • 哈希表
    #pragmaonce//#include<unordered_map>//#include<unordered_set>#include<string>#include<iostream>usingstd::cout;usingstd::endl;usingstd::cin;//unordered_set和unordered_map--还有multi共4中/*****和RBT的区别是*1.unordere......
  • CCPC2023深圳 K-四国军棋(线段树维护单调栈哈希值)
    传送门解题思路对于每个人的棋子,总是最高的那个棋子发挥决定性作用,被消耗后,再看剩下的最高的棋子。这就相当于单调不递增栈的维护过程。最后就要比较两个人的单调不递增栈是否完全相同。和经典的楼房重建相似,但是这个题不止需要维护单调栈的长度,还要维护哈希值。我是分开写的......
  • 关于磁盘和镜像的哈希值校验
    在取证做题联系的时候经常遇到这样的题目:请计算源盘的hash值,这时我们需要先对镜像进行挂载,像ftkimager等等软件,再对挂载后的磁盘进行hash值的计算给出两个计算工具1、火眼放入检材后相当于自动挂载2、winhex(注意此时如果需要计算本地磁盘的hash值,需要以管理员的身份运行winhe......
  • 代码随想录 第六天 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交
    LeetCode:242.有效的字母异位词-力扣(LeetCode)思路:既然只判断两个字符串的字母,就一个++,一个--,最后如果二十六个字母都是零,说明两个字符串相等。反思: //charat(i)是返回字符串索引,所以s.charAt(i)-'a'实际上是获取字符串s中第i个字符相对于字母'a'的偏移量。......
  • python dict 哈希表
    哈希值Python 内置函数 hash 返回对象 哈希值 ,哈希表 依赖 哈希值 索引元素:根据哈希表性质, 键对象 必须满足以下两个条件,否则哈希表便不能正常工作:哈希值在对象整个生命周期内不能改变;可比较,且比较相等的对象哈希值必须相同;满足这两个条件的对象便是......
  • 图解一致性哈希算法
    一、背景在具体介绍一致性哈希算法之前,先问一个问题:为什么需要一致性哈希算法?下面我们通过一个案例来回答这个问题。假设有这么一种场景:我们有三台缓存服务器分别为:node0、node1、node2,有3000万个缓存数据需要存储在这三台服务器组成的集群中,希望可以将这些数据均匀的缓存到三台......
  • 算法-哈希表
    1.有效字母的异位词(LeetCode242)题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。s和t仅包含小写字母思路:使用大小为26的数组存储单词中每个字母出现的次数因为题目限制了字......
  • [学习笔记]哈希与哈希表
    1.定义我们定义一个把字符串映射到整数的函数\(f\),这个\(f\)称为是Hash函数。我们希望这个函数\(f\)可以方便地帮我们判断两个字符串是否相等。词汇“映射”映射意为将一个集合中的任意元素和另一个集合中的元素一一对应。(请大佬指正)2.思想Hash的核心思想在于,将输入......