查找问题
4-1,2
两类查找问题
1 查找有无:set
2 查找对应关系:map
常见的四种操作: insert, find, erase, change(map)
例题 leetcode 349 :给定两个数组,求两个数组的公共元素。
要求:结果中每个元素只能出现一次
出现的顺序可以是任意的
使用set,set的使用
改进后的代码:
leetcode 350
方法:使用map
映射是有默认值的,一旦被访问一次,就会分配默认值0;
扩展题:对于两个问题,如果数组有序?
4-3456
leetcode 454
解法:
组合逻辑将特定的内容放到查找表中,明确我们需要找到什么?
思考题:
练习题:
leetcode 49
注意问题:字符集的范围?是否大小写敏感?
leecode:447
观察到i是一个枢纽,对于每个点i,遍历其余点到i的距离,此时时间复杂度:O(N^2)
关键点:是至少两个点到i的距离相等。如果到n相等的有n个点,则对于该距离有n*(n-1)中满足条件
map(距离,频次)
为了避免两个点的真实距离出现小数点,故在求距离时,不开根号。不开根号的情况下也能保持两个点的相对距离大小。
代码如下:
两个数相乘的时候哦容易出现整型溢出,为了避免出现这种情况,可以将private下面的int 改成long long。
扩展题:leetcode 149
4-78滑动窗口+查找表
leetcode 219
在连续的区间k+1个元素中,是否能找到两个相等的元素。
对于该问题,滑动窗口的长度是固定的。
扩展题:leetcode:217
二分搜索数
x的取值范围就是【v-t,v+t】
相乘的时候为了避免整型溢出