80.两个数组的交集 II
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
/*
解法
双指针运行
先让两个数组排序,设置双指针分别从小到大遍历
每次判断指针小的,使其右移,相同时加到结果数组中
时间复杂度O(m log m +n log n)
*/
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
ArrayList<Integer> ans=new ArrayList<Integer>();//设置动态数组不用提前录入两个数组相同数字的个数
int i=0,j=0;
while(i<nums1.length&&j<nums2.length)//当有一个指针超出范围时遍历结束
{
if(nums1[i]>nums2[j]) j++;
else if(nums1[i]<nums2[j]) i++;
else if(nums1[i]==nums2[j]){
ans.add(nums1[i]);
j++;
i++;
}
}
//原本我打算直接输出ans的,但是系统报错说是应该输出int[]类型,而不该是List<Integer>
//所以我又创建一个数组res,将ans的值遍历给他
int[] res = new int[ans.size()];
i = 0 ;
for(int k : ans){
res[i] = k;
i++;
}
return res;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?