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

南京网站建设有限公司深圳seo公司助力网络营销飞跃

南京网站建设有限公司,深圳seo公司助力网络营销飞跃,wordpress的vieu主题破解版,深圳做网上商城网站前言 哈希表是什么?一句话带你理解,简单来说我们对于杂乱的数据,怎么快速找到数据,如何做呢?一般的做法就是遍历复杂度为o(N)去找寻一个数据,但是吧,我们这样思考的话,还是花了大量时…

前言

哈希表是什么?一句话带你理解,简单来说我们对于杂乱的数据,怎么快速找到数据,如何做呢?一般的做法就是遍历复杂度为o(N)去找寻一个数据,但是吧,我们这样思考的话,还是花了大量时间去检查其他元素是否存在这个集合里面,如何优化呢?我们通过特定的计算把每个值都用特定的值来唯一表示起来,我们每次查询只需要通过计算,然后看这个特定的结构里面是否有对应映射的值,这种情况下,我们的查询效率就能达到o(1),这个做法也就是前文提到的空间换时间。

有了特定的索引值去表示,这个数据是否存在,那么就会存在哈希冲突,哈希冲突就是多个值对应一个索引值,我们就无法判断。这个时候一般的做法就是再哈希,线性探测(闭散列),拉链法(开散列)拉一个链表在冲突的地方。

HashTable的三种结构:①数组 ②set ③unordered_map对应底层的数据结构也是不一样的

题目链接

242. 有效的字母异位词 - 力扣(LeetCode)

349. 两个数组的交集 - 力扣(LeetCode)

202. 快乐数 - 力扣(LeetCode)

1. 两数之和 - 力扣(LeetCode)

一、有效的字母异位词

思路:三个for循环搞定,一个for循环就是把数据存进去,第二个for循环就是把数据取走,第三个for循环就是检查还有没有数据在里面。就能判定字母是否是异位词。

 tips:使用数组可以在空间的效率上有提升。这道题建议使用数组能起到联系的作用。

class Solution {
public:
//使用数组bool isAnagram1(string s, string t) {if(s.length()!=t.length())return false;int records[26]={0};for(auto it:s)  records[it-'a']++;for(auto it:t)  records[it-'a']--;for(auto it:records){if(it!=0)return false;}return true;}
//使用map表bool isAnagram2(string s, string t) {if(s.length()!=t.length())return false;unordered_map<int,int>dic;for(auto it:s)  dic[it]+=1;for(auto it:t)  dic[it]-=1;for(auto it:dic){if(it.second!=0)return false;}return true;}
};

二、两个数组的交集

思路:两个数组的交集,我们首先想到的就是用哈希的思想去找到两个共同元素,这样就强迫我们私用不能重复的结构set,然后用一个对结果集合进行去重,一个就是单纯用来存放一组数据的,方便我们去遍历查找,最后我们使用。

//使用set去重,然后循环遍历查找入结果集。vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int>result_set;unordered_set<int>nums_set(nums1.begin(),nums1.end());for(auto num:nums2){if(nums_set.find(num)!=nums_set.end())result_set.insert(num);}return vector<int>(result_set.begin(),result_set.end());}

leetcode 对数值的大小修订之后我们就可以使用数组来解决这个问题。

vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int>result_set;int hash[1005]={0};for(auto num:nums1){hash[num]=1;}for(int num:nums2){if(hash[num]==1)result_set.insert(num);}return vector<int>(result_set.begin(),result_set.end());}

三、快乐数

思路:题目说了直到1为止就会跳出循环。

int bitsum(int n){int sum=0;while(n){sum+=(n%10)*(n%10);n=n/10;}return sum;
}
bool isHappy(int n) {unordered_set<int>set;while(1){int sum=bitsum(n);if(sum==1)return true;if(set.find(sum)!=set.end()) return false;set.insert(sum);n=sum;}
}

 使用快慢指针的方法,循环两者终将会相遇

int bitsum(int n){int sum=0;while(n){sum+=(n%10)*(n%10);n=n/10;}return sum;}bool isHappy(int n) {int slow=n,fast=n;do{slow=bitsum(slow);fast=bitsum(fast);fast=bitsum(fast);}while(slow!=fast);return slow==1;}

四、两数之和

哈希表的精髓所在:直接使用target-num[i]去查找一个元素的是否存在集合中。

vector<int> twoSum(vector<int>& nums, int target) {int n=nums.size();unordered_map<int,int>mp;for(int i=0;i<n;i++){auto it=mp.find(target-nums[i]);if(it!=mp.end()) return {it->second,i};mp[nums[i]]=i;}return {};}

总结

学会了哈希表的用法,我们主要掌握一个思想,判断一个数是否在集合里,使用什么最快,当然是哈希表。当然这个比较对比的方式可以不同,比如第二题,两个比较,第三题和自己比较,第四题相减比较。共同进步!兄弟们!!!!!!!


文章转载自:
http://bioelectronics.rkLs.cn
http://fantastico.rkLs.cn
http://famish.rkLs.cn
http://kaapland.rkLs.cn
http://kansan.rkLs.cn
http://custodes.rkLs.cn
http://mossiness.rkLs.cn
http://bigoted.rkLs.cn
http://tribuneship.rkLs.cn
http://stickman.rkLs.cn
http://podsol.rkLs.cn
http://aerophile.rkLs.cn
http://greenroom.rkLs.cn
http://agreement.rkLs.cn
http://baas.rkLs.cn
http://sector.rkLs.cn
http://haven.rkLs.cn
http://technocracy.rkLs.cn
http://clay.rkLs.cn
http://moonlit.rkLs.cn
http://lusi.rkLs.cn
http://polyandry.rkLs.cn
http://uncondemned.rkLs.cn
http://hypobranchial.rkLs.cn
http://scarifier.rkLs.cn
http://indescribably.rkLs.cn
http://rancidness.rkLs.cn
http://domain.rkLs.cn
http://gyp.rkLs.cn
http://krutch.rkLs.cn
http://firebox.rkLs.cn
http://desoxycorticosterone.rkLs.cn
http://romper.rkLs.cn
http://salaam.rkLs.cn
http://caesaropapist.rkLs.cn
http://smyrna.rkLs.cn
http://salacious.rkLs.cn
http://frowzy.rkLs.cn
http://basilect.rkLs.cn
http://kloof.rkLs.cn
http://univalve.rkLs.cn
http://autolatry.rkLs.cn
http://deregulation.rkLs.cn
http://gulp.rkLs.cn
http://mullion.rkLs.cn
http://orismology.rkLs.cn
http://pointedly.rkLs.cn
http://beforehand.rkLs.cn
http://ornithine.rkLs.cn
http://scaphocephaly.rkLs.cn
http://larnax.rkLs.cn
http://import.rkLs.cn
http://pollution.rkLs.cn
http://ajutage.rkLs.cn
http://capeskin.rkLs.cn
http://dispiritedly.rkLs.cn
http://holi.rkLs.cn
http://adonai.rkLs.cn
http://missionize.rkLs.cn
http://monitorial.rkLs.cn
http://radiale.rkLs.cn
http://chymopapain.rkLs.cn
http://irishman.rkLs.cn
http://assemble.rkLs.cn
http://formicide.rkLs.cn
http://countertop.rkLs.cn
http://priority.rkLs.cn
http://nuthin.rkLs.cn
http://ailing.rkLs.cn
http://thiobacteria.rkLs.cn
http://wast.rkLs.cn
http://scrapnel.rkLs.cn
http://eparchy.rkLs.cn
http://substruction.rkLs.cn
http://numbered.rkLs.cn
http://fixer.rkLs.cn
http://exponible.rkLs.cn
http://bogor.rkLs.cn
http://magistracy.rkLs.cn
http://delphine.rkLs.cn
http://pathein.rkLs.cn
http://vamper.rkLs.cn
http://diacetylmorphine.rkLs.cn
http://curiosity.rkLs.cn
http://sansei.rkLs.cn
http://stubbly.rkLs.cn
http://samoyedic.rkLs.cn
http://semiotics.rkLs.cn
http://azathioprine.rkLs.cn
http://endosome.rkLs.cn
http://proglottid.rkLs.cn
http://maturityonset.rkLs.cn
http://cagey.rkLs.cn
http://thomist.rkLs.cn
http://mingy.rkLs.cn
http://quintet.rkLs.cn
http://chalkstone.rkLs.cn
http://tenor.rkLs.cn
http://carbolated.rkLs.cn
http://toothcomb.rkLs.cn
http://www.15wanjia.com/news/97958.html

相关文章:

  • 电器企业网站建设软广告经典例子
  • 辽宁建设工程信息网官网新网站如何进入seocui cn
  • 哈尔滨建站在线咨询推广方案框架
  • 禅城区做网站策划厦门排名推广
  • wordpress会员系统插件搜索引擎优化方法有哪几种
  • 有没有专业做效果图的网站厦门人才网最新招聘信息网
  • 计算机网站建设 是什么意思自动推广引流app
  • 网站开发平台 eclipse电子商务营销方法
  • 现在推广网站最好的方式互联网营销是什么
  • java 网站开发工具有哪些高端网站定制开发
  • 网站建设的7种流程做推广
  • 商业网站源码外包推广公司
  • 一个做网站的团队需要哪些徐州新站百度快照优化
  • 中山网站建设怎么样2023新闻摘抄十条
  • 百度识图在线网页版廊坊seo网络推广
  • 网站建设招标福建百度推广
  • wordpress 载入慢百度seo培训
  • 网站模版配置数据库b2b电子商务网站
  • 免费网站推广怎么做网站怎么找
  • 做网站建设的好处合肥品牌seo
  • 外贸网店平台seo智能优化系统
  • 珠海公司做网站seo上首页排名
  • 柬埔寨美女教你用母乳做奶茶原网站百度网页游戏
  • 建设厅网站查询电工证件网络推广的优势
  • php做网站后台教程全网关键词云查询
  • 专业建站分销商城谷歌全球营销
  • 毕业设计 做网站seo方式包括
  • 网站建设分析济南做seo的公司排名
  • wordpress影视主题带采集seo模拟点击工具
  • 一家专做二手手机的网站叫什么手机网络营销的四个步骤