349. 两个数组的交集:
题目链接 :349. 两个数组的交集
题目:利用set不重复且动态扩容的两个特性。
思路:
1、典型的滑动窗口类型,需要考虑三个问题:
(1)窗口内元素:最短 满足覆盖
(2)窗口起始位置:第一个在t和s中重复的字符
(3)窗口结束位置:最后一个一个在t和s中重复的字符
2、巧用字典记录每个字符出现次数,用最短长度限制每个字符次数
AC代码:
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1==null||nums1.length==0||nums1==null||nums1.length==0){
return new int[0];
}
Set<Integer> s1=new HashSet<>();
Set<Integer> re=new HashSet<>();
for(int i:nums1)
{
s1.add(i);
}
for(int i:nums2)
{
if(s1.contains(i))
{
re.add(i);
}
}
int[] ar=new int[re.size()];
int idx=0;
for(int i:re){
ar[idx++]=i;
}
return ar;
}
}