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;
    
}
}
相关推荐
JH30731 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
m0_736919102 小时前
C++代码风格检查工具
开发语言·c++·算法
Coder_Boy_2 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2501_944934732 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
invicinble2 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟3 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖3 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472463 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
TechWJ4 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
qq_12498707534 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计