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

郑州网站建设 股权投资学院网站建设投标

郑州网站建设 股权投资,学院网站建设投标,外协加工网最新订单,医院工程建设网站哈希表概念 哈希表是根据关键码的值而直接进行访问的数据结构。 直白来讲数组就是一种哈希表。 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。 那么一般都是将一个集合里面的元素映射为哈希表的索引。 那么设计哈希表的时候需要…

哈希表概念

哈希表是根据关键码的值而直接进行访问数据结构
直白来讲数组就是一种哈希表。
那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里
那么一般都是将一个集合里面的元素映射为哈希表的索引。
那么设计哈希表的时候需要考虑以下原则:均匀性,尽可能让不同key均匀分布到哈希表中;高效性;覆盖性,确保所有key都能映射到哈希表范围内。
当多个元素映射到同一个索引时,这种现象叫做哈希碰撞
解决哈希碰撞有两种方法:

  • 拉链法,发生冲突的元素都被存储在链表中,这样可以通过索引找到冲突的元素了。这样做就及不会因为数组空值而浪费大量内存,又不会因为链表太长而在查找上浪费太多时间。
    在这里插入图片描述

  • 线性探测法,这种方法一定要保证tablesize要大于datasize,冲突了那么就找下一个空位放置冲突的元素。
    在这里插入图片描述

常见的三种哈希结构

  • 数组
  • set
  • map
    当我们使用哈希法来解决问题的时候,
集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
std::set红黑树有序O(log n)O(log n)
std::multiset红黑树有序O(log n)O(log n)
std::unordered_set哈希表无序O(1)O(1)

set的键值和实值时一个东西,既时键值又是实值。是一个双向迭代器,只能it+±-,不能it+2.

映射底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
std::map红黑树key有序key不可重复key不可修改O(log n)O(log n)
std::multimap红黑树key有序key可重复key不可修改O(log n)O(log n)
std::unordered_map哈希表key无序key不可重复key不可修改O(1)O(1)

当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。

有效字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

eg:
输入: s = “anagram”, t = “nagaram”
输出: true

要点

这道题目总共就26个字母,限制了范围的,那么就直接用数组实现很简单,映射通过ASCII码实现。

#include <vector>
class Solution {
public:bool isAnagram(string s, string t) {vector<int> record(26,0);//因为是只判断字母,所以只有26个索引就行了for (int i = 0; i < s.size(); i++) {record[s[i] - 'a']++; //如果是a那就是0,利用了字母ASCII码中递增}for (int j = 0; j < t.size(); j++) {record[t[j] - 'a']--;//再依次遍历所有t中的,利用--}for (auto iter = record.begin(); iter != record.end(); iter++) {if(*iter != 0) {return false;}}return true;}
};

两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

这里就最好不使用数组,但因为题目规定了大小在1000.因此也可以用数组的方式实现。

利用unordered_set实现:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set;unordered_set<int> num1_set(nums1.begin(),nums1.end()); //将nums1的值begin到end赋值给num1——setfor (int num : nums2) {if (num1_set.find(num) != nullptr) {  //利用stl中的findresult_set.insert(num);}}return vector<int>(result_set.begin(),result_set.end());}
};

文章转载自:

http://7bSJrxCJ.tkchg.cn
http://H6FuMUe9.tkchg.cn
http://t1qpAO6Z.tkchg.cn
http://u5aHi1Cm.tkchg.cn
http://GI7tO8A3.tkchg.cn
http://zg3qqa82.tkchg.cn
http://DrHVfI4v.tkchg.cn
http://xHKle1iq.tkchg.cn
http://ZPhpIKwr.tkchg.cn
http://xA3svojM.tkchg.cn
http://dDdS4kjn.tkchg.cn
http://viXQYVSu.tkchg.cn
http://nJpPmCcN.tkchg.cn
http://EHooVNNI.tkchg.cn
http://8Hs6uHbs.tkchg.cn
http://Nwn1r0ha.tkchg.cn
http://lZUheL96.tkchg.cn
http://nHWSOxQH.tkchg.cn
http://CRgiph9B.tkchg.cn
http://VsQTf0Ty.tkchg.cn
http://nUIGimFF.tkchg.cn
http://QJ24Q8rM.tkchg.cn
http://YDI7P6Ss.tkchg.cn
http://Ww6B4X1o.tkchg.cn
http://dgKhV26T.tkchg.cn
http://fuGw0zFA.tkchg.cn
http://pyqxloTd.tkchg.cn
http://D7Ucgseo.tkchg.cn
http://pSZ90Fj0.tkchg.cn
http://oPQzICd6.tkchg.cn
http://www.dtcms.com/wzjs/682256.html

相关文章:

  • 网站推广方式关键词优化排名易下拉稳定
  • 昆明做网站设计谷秋精品课程网站建设软件
  • 网站续费开发门户网站
  • 泰安网站建设哪家快深圳公司开发网站
  • 做网站需要什么技能西安 医疗网站建设
  • 做平面什么网站好用龙岩招聘网最新招聘在龙岩的工作
  • 上海建站提供商怎么样建设网站网站
  • 盐城建站江西网站开发软件公司
  • vpn网站模板wordpress 分类信息主题
  • 本地镇江网站建设长沙设计网站多少钱
  • 网站安全建设管理制度会展网站代码源码
  • 什么是网站设计在网站上做送餐外卖需要哪些资质
  • 金融棋牌网站建设wordpress 页面模板 自定义
  • 做商城型网站汕头网页制作
  • 钟落潭有没有做网站的云南品牌网站开发
  • 网站建设设计主要系统网站建设这个职业是什么
  • 用wordpress做站群深圳网站建设服务什么便宜
  • 西宁市建设网站多少钱高端品牌网站建设九五网络
  • 温州制作企业网站厦门人才网唯一官网登录
  • wordpress建站教程视频做儿童文学有哪些的网站
  • 企业网站建设范文淘宝网页版登陆
  • 黑龙江网站备案管理局重庆装修
  • 网站建设套模板下载wordpress新主题去版权
  • 个人做网站备案吗深圳公司官网设计
  • 网站模板如何使用 如何修改吗赚钱的软件
  • 住房和城乡建设网站南阳网站托管
  • 十大SEO网站外链建设误区个人站长怎么样做网站才不会很累
  • 知名营销类网站国家企业信用信息公示系统官网 2
  • 做水果网站弄个什么名字做外贸网站卖什么东西好
  • 网站建站建设首选上海黔文信息科技有限公司2wordpress相册代码