首页 > 其他分享 >数组和哈希表的选择

数组和哈希表的选择

时间:2023-03-10 09:34:58浏览次数:35  
标签:std set 题目 哈希 选择 数组 unordered

使用数组来做哈希的题目,是因为题目都限制了数值的大小。

题目没有限制数值的大小,就无法使用数组来做哈希表了。

而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。

关于set,C++ 给提供了如下三种可用的数据结构:

  • std::set
  • std::multiset
  • std::unordered_set

std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还可以对数据去重。

但是!!!直接使用set 不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。

不要小瞧这个耗时,在数据量大的情况,差距是很明显的。

标签:std,set,题目,哈希,选择,数组,unordered
From: https://www.cnblogs.com/ysl99999/p/17202287.html

相关文章

  • 关于JAVA泛型数组类型擦除引发的问题及解决方案
    先看如下一个DEMO示例代码:(其中doBatchGet被子类重写了1次)publicabstractclassBaseDemoService<T>{publicStringbatchGet(T...ints){Tone=ints[......
  • 【LeeCode】350. 两个数组的交集 II
    【题目描述】给你两个整数数组 ​​nums1​​ 和 ​​nums2​​ ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致......
  • Go 数组、slice、map
    1.数组go中的数组需要提前定义好长度初始化1varcourse[3]stringcourse[0]="go"course[1]="grpc"course[2]="gin"初始化2course:=[3]string{"g......
  • 【LeeCode】349. 两个数组的交集
    【题目描述】给定两个数组 ​​nums1​​ 和 ​​nums2​​ ,返回 它们的交集 唯一 的。我们可以 不考虑输出结果的顺序 。​​​​https://leetcode.cn/problems/i......
  • [蓝桥杯 2019 省 A] 修改数组 ———并查集练习(大学复健)
    本题拿到第一反应桶排序思想似乎可以水过,但是很明显出问题了。#include<bits/stdc++.h>usingnamespacestd;intN;inlineintkd(){ intx=0,f=1;charch=getchar......
  • 数组-2
    数组内容:一些数组的常规应用多维数组Arrays工具类一、一些数组的常规应用1.元素访问判断一个元素,在任意数组当中是否存在,如果存在返回该元素所在的游标,如果不存......
  • 剑指 Offer 21.调整数组顺序使奇数位位于偶数前面
    题目描述   解法一双指针法classSolution{public:vector<int>exchange(vector<int>&nums){intlen=nums.size();vector<int>r......
  • php之配置和选择工具
    最近在考虑用php的成品源码去搭建一个个人博客网页,于是就想着先在本地运行好后,然后再使用服务器来搭建php的环境和网页。1.运行工具因为本地基本只是考虑练......
  • 微信小程序配置地图,城市选择,地铁图,路线规划
    微信小程序之地图选地、城市选择、地铁图、路线规划一、简介腾讯位置服务为微信小程序提供了基础的标点能力、线和圆的绘制接口等地图组件和位置展示、地图选点等地图......
  • 差分数组
      首先要了解几个概念,假定b(n)是a(n)的差分数组。(1)差分数组:b(n)=a(n)-a(n-1),(2)a(i)数组的值是差分数组b(1)-b(i)的和。即前缀和sum(i)。差分数组的前缀和:b(n)+=b(n-1)(3)在b(l)......