【精】LintCode领扣算法问题答案:548. 两数组的交集 II
发布日期:2021-06-30 17:13:27
浏览次数:2
分类:技术文章
本文共 1581 字,大约阅读时间需要 5 分钟。
548. 两数组的交集 II
描述
给定两个数组,计算两个数组的交集
- 每个元素出现次数得和在数组里一样
- 答案可以以任意顺序给出
样例 1:
输入: nums1 = [1, 2, 2, 1], nums2 = [2, 2]输出: [2, 2]
样例 2:
输入: nums1 = [1, 1, 2], nums2 = [1]输出: [1]
挑战
-如果给定的数组已经排序了怎么办?如何优化算法?
-如果nums1的大小比num2的小怎么办?哪种算法更好? -如果nums2的元素存储在磁盘上,并且内存受到限制,以至于不能一次将所有元素加载到内存中,该怎么办?文章目录
题解
public class Solution { /** * @param nums1: an integer array * @param nums2: an integer array * @return: an integer array */ public int[] intersection(int[] nums1, int[] nums2) { // write your code here Mapcounter1 = new HashMap<>(); Map counter2 = new HashMap<>(); for (int num : nums1) { counter1.put(num, counter1.getOrDefault(num, 0) + 1); } for (int num : nums2) { counter2.put(num, counter2.getOrDefault(num, 0) + 1); } List list = new ArrayList<>(); for (Map.Entry row : counter1.entrySet()) { Integer count2 = counter2.get(row.getKey()); if (count2 != null) { for (int i = 0; i < Math.min(row.getValue(), count2); ++i) { list.add(row.getKey()); } } } int[] ans = new int[list.size()]; { int i = 0; for (Integer num : list) { ans[i++] = num; } } return ans; }}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由博客原创,转载请注明来源,谢谢~
转载地址:https://le-yi.blog.csdn.net/article/details/114264006 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月04日 16时43分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android使用Retrofit_00_Getting Started
2019-04-30
Android使用Retrofit_01_OAuth2 + GitHub
2019-04-30
Django + REST学习笔记
2019-04-30
【转载】将Ubuntu16.04 中gedit在仅显示一个文件时显示文件名tab
2019-04-30
fstream 对象多次使用时注意clear
2019-04-30
调试 LenaCV 3D Camera (Linux)
2019-04-30
OpenCV杂记 - Mat in C++
2019-04-30
lnmp部署
2019-04-30
location区段
2019-04-30
nginx访问控制、基于用户认证、https配置
2019-04-30
用zabbix监控nginx
2019-04-30
SaltStack
2019-04-30
Jenkins 控制台输出中的奇怪字符
2019-04-30
Linux添加系统调用
2019-04-30
linux内存的寻址方式
2019-04-30
ubunut16.04的pip3出现问题,重新安装pip3
2019-04-30