1.1. 两数之和,存当前数和下标映射,并在哈希表中查找补数。
2.1128. 等价多米诺骨牌对的数量,求等价的,也就是key相同,构造key通过pair的较大or较小一数*10+另一个数,绝了绝了。
3.159.最多有两个不同字符的最长子串,用哈希表来记录当前窗口中的字符出现次数,其实很多滑动窗口的题目中都会记录,移动right的时候操作,移动left的时候也更改,这个题也会放到滑动窗口中。map也可以erase掉关键词key,当它对应的key对应的value是0的时候。
4.146. LRU 缓存机制,除了哈希还用到了双向链表,将最近出现的移动到链表头,双向链表有假头和假尾节点,实现了O(1)的复杂度。
数组中的利用下标形成哈希表:
1. 268. 丢失的数字, 通过数值与下标的对应建立哈希。这个可以用下标和异或^来解决。
2.442. 数组中重复的数据,利用下标形成数组,nums[i]是数组的下标值。
3.448. 找到所有数组中消失的数字,同上;每次取负,出现两次的位置会变正。
4.41. 缺失的第一个正数,这个相较于之前的不同在于数据不是在[1,n]之间了,而是任意大的数值。那就只在[1,n]范围的swap,也有取负数的解法。
综上,可以swap比较好想,取负数解法有一定技巧,但也不是特别难。