2025年--Lc231-350. 两个数组的交集 II-Java版

1.题目

2.思路

3.代码实现

java 复制代码
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
// 统计频率:用哈希表记录 nums1 中每个元素的出现次数。
// 动态匹配:遍历 nums2,若元素在哈希表中且剩余次数 > 0,则加入结果,并减少哈希表中的计数。
// 优化空间:为了节省内存,选择较短的数组作为哈希表的统计对象
   if(nums1.length>nums2.length)
   {
    // 保证 nums1 是较短的数组,减少哈希表空间
    return intersect(nums2,nums1);
   }
   HashMap<Integer,Integer> ma=new HashMap<>();
   //统计nums1中元素的频率
   for(int num:nums1)
   {//ma存放元素和元素出现的次数
    ma.put(num,ma.getOrDefault(num,0)+1);
   } 
   List<Integer> res=new ArrayList<>();   
   // 遍历 nums2,动态匹配并减少计数
   for(int num:nums2) 
   {
    int cnt=ma.getOrDefault(num,0);
    if(cnt>0)
    {
        res.add(num);
        ma.put(num,cnt-1);
    }
   }
   //转换成数组
   int[] ans=new int[res.size()];
   for(int i=0;i<ans.length;i++)
   {
    ans[i]=res.get(i);
   }
   return ans;
    
}
}
相关推荐
molaifeng4 小时前
Go 语言如何实现高性能网络 I/O:Netpoller 模型揭秘
开发语言·网络·golang
韩师学子--小倪4 小时前
fastjson与gson的toString差异
java·json
Drawing stars4 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间4 小时前
Matlab学习记录33
开发语言·学习·matlab
Evand J4 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
nbsaas-boot4 小时前
SQL Server 存储过程开发规范(公司内部模板)
java·服务器·数据库
行百里er5 小时前
用 ThreadLocal + Deque 打造一个“线程专属的调用栈” —— Spring Insight 的上下文管理术
java·后端·架构
jllllyuz5 小时前
基于MATLAB的二维波场模拟程序(含PML边界条件)
开发语言·matlab
忆锦紫5 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab
玄〤5 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot