
HASH
stormjing7
这个作者很懒,什么都没留下…
展开
-
Leetcode 3. 无重复字符的最长子串(双指针)
Leetcode 3. 无重复字符的最长子串 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 分析 思路 找符合特定条件的子串,首先暴力就是枚举。为了方便枚举可以将其分类为以 s[i] 结尾的字符串集合,这样就变为找所有集合中最大值。 进一步,对于每一个结尾为 s[i] 的字符串,要找到最左边的 j ,那么 s[j -> i]即为当前集合的目标字串,i - j + 1 即为当前集合的答案。 如何找 j,可以从 i 往前扫,直到 s[j-1 -> i] 中有重复元素。原创 2021-01-13 12:19:27 · 388 阅读 · 0 评论 -
Leetcode 1. 两数之和(哈希)
题目 给一个数组,和一个目标值 target,要找到数组中两个数加起来等于 target,并返回两个数下标,注意两个数不能是相同的数。只有一种答案。 分析 当然可以暴力,O(n^2)枚举所有两个数的可能。 O(n) 做法是,利用两个数之间的联系,固定一个数 a,另外一个数也随之固定:target - a。可以用哈希预处理数组,将第二个循环优化掉。 代码思路就是,因为一定存在一对数符合,可以固定第二个数,在当前位置前面找第一个数。 注意 map 底层红黑树,平均 O(logn); unordered_map原创 2021-01-12 20:38:37 · 281 阅读 · 0 评论 -
字符串哈希
//hash一般用来解决字符串判重/字符串匹配问题 //遇见不定长问题可通过二分+hash降低复杂度 //遇见定长字符串问题可通过尺取+hash来降低复杂度 //二维hash的时候尺取方法就是把之前不需要的都变为0再加上当前行,将匹配字符串整体下移,来验证hash值是否相等 //---------------------------------单Hash----------------------...原创 2019-06-21 17:20:31 · 844 阅读 · 0 评论 -
51nod- 2619 三个好朋友(裸哈希)
51 nod-2619 三个好朋友 题目 首先有一个字符串 S,两个S拼接变成字符串 T,接着在 T 中插入一个字符变成了字符串 U。题目给出 U串,求是否存在原 S串。 输出一行,若S不存在,输出"NOT POSSIBLE".若S不唯一,输出"NOT UNIQUE".否则输出S。 分析 想暴力思路,对于每一位都假设是添加进去的,模拟删除之后两个字符串的左右是否相同。复杂度 O(n^2)。 复杂度...原创 2019-06-21 22:05:36 · 566 阅读 · 0 评论