![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hash
文章平均质量分 70
fenfenmiao
这个作者很懒,什么都没留下…
展开
-
hash,分离链接法,探测散列表(二次探测),再散列的代码
数据结构与算法分析C++版的搬运工......#include#include#includeusing namespace std;//字符串hash,把每个字符的ASCII码加起来,然后对tablesize取模,tablesize注意选择,一种策略是选素数,这样能比较均匀//一种很简单的hash,但是如果tableSize很大的话,分布就不会均匀/*int hash(co原创 2017-03-01 11:48:39 · 977 阅读 · 0 评论 -
Single Number
可以用hash表:class Solution {public: int singleNumber(vector& nums) { unordered_map re; for(int i=0;i<nums.size();i++) { if(re.find(nums[i])==re.end())原创 2017-03-12 09:25:30 · 240 阅读 · 0 评论 -
Happy Number
第一种,用哈希,每次算完一个平方和去表里看一看,如果这个不是1还和表重了,那就不是:class Solution {public: bool isHappy(int n) { unordered_map Fi; while(n!=1) { int sum=0; while(n!=0)原创 2017-03-12 10:09:25 · 317 阅读 · 0 评论 -
Count Primes
啊,不用埃拉托斯特尼筛法,怎样都是time超了......具体筛法就是那个图,下面这段话是别处找的,能理解大致意思,但是有一点我理解的和他不一样,这个找素数应该是遍历中当前的下一个没被标记的就是素数,而不用全找完了再遍历一圈,看下面的代码就知道了。这道题给定一个非负数n,让我们求小于n的质数的个数,题目中给了充足的提示,解题方法就在第二个提示埃拉托斯特尼筛法Sieve of Era转载 2017-03-12 11:04:40 · 227 阅读 · 0 评论 -
Isomorphic Strings
哈希表,哈希的思想,不一定都要用unordered_map的....class Solution {public: bool isIsomorphic(string s, string t) { int Se[256]={0}; int Te[256]={0}; int n=s.length(); fo原创 2017-03-12 18:56:57 · 224 阅读 · 0 评论 -
Word Pattern
这个hash的模式之前也用过,Isomorphic Strings这道题用过,就是搞两个表,对两个比较的模式,key塞字符串,值塞第一次出现的位置,然后两个表的字符串,如果是对应的,那么相应的key的值是一样的,如果不对应(模式不一样),那么相应的key的值就不一样。还有一个就是字符串有空格,怎样拆分,这里用了一个流的模式:class Solution {public: bool原创 2017-03-12 21:45:35 · 419 阅读 · 0 评论 -
Intersection of Two Arrays
这个思路比较简单,想说下语法点。unordered_map是键值对,键hash,unordered_set就是一个hash集合,只是key的集合,方便快速查找的。同时set是红黑树,所以有两个很好的特点,有序,没有重复,而且O(logN)的效率也很高。这里对nums1做了一个unordered_set,就用了没重复的特性。class Solution {public: vector转载 2017-03-13 19:25:09 · 266 阅读 · 0 评论 -
Find All Anagrams in a String
用一个窗口......hash表的活学活用......class Solution {public: vector findAnagrams(string s, string p) { vector pv(256,0),sv(256,0),re; if(s.size()<p.size()) return re; for(转载 2017-03-16 19:20:39 · 251 阅读 · 0 评论 -
Number of Boomerangs
这道题的思路不是很难,就是要挨个算距离,然后做一个表,用排列组合的A算所求的值。问题在于,这道题,可以说是时间换内存。由于平方的数很大,如果你在for的最外边用map,内存是不够的,所以要在第一个平方里面用,会造成一些时间上的重复,ab ba都要算class Solution {public: int numberOfBoomerangs(vector>& points) {转载 2017-03-16 23:15:25 · 286 阅读 · 0 评论