博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
350. Intersection of Two Arrays II
阅读量:2351 次
发布时间:2019-05-10

本文共 2023 字,大约阅读时间需要 6 分钟。

Given two arrays, write a function to compute their intersection.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]
Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Note:
Each element in the result should appear as many times as it shows in both arrays.
The result can be in any order.
Follow up:
What if the given array is already sorted? How would you optimize your algorithm?
What if nums1’s size is small compared to nums2’s size? Which algorithm is better?
What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?

我的想法

一开始题意理解错了,以为是substring。这里是求交集,对顺序是没有要求的

class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
HashMap
map = new HashMap<>(); List
res = new ArrayList
(); for(int i = 0; i < nums1.length; i++) {
if(map.containsKey(nums1[i])) {
map.put(nums1[i], map.get(nums1[i]) + 1); } else {
map.put(nums1[i], 1); } } for(int i = 0; i < nums2.length; i++) {
if(map.containsKey(nums2[i])) {
res.add(nums2[i]); if(map.get(nums2[i]) > 1) {
map.put(nums2[i], map.get(nums2[i]) - 1); } else {
map.remove(nums2[i]); } } } int[] retn = new int[res.size()]; for(int i = 0; i < res.size(); i++) {
retn[i] = res.get(i); } return retn; }}

解答

follow up:

1:
用双指针,比hashmap省空间

2:

用HashMap,把小的存在hashmap里

3:

If only nums2 cannot fit in memory, put all elements of nums1 into a HashMap, read chunks of array that fit into the memory, and record the intersections.

If both nums1 and nums2 are so huge that neither fit into the memory, sort them individually (external sort), then read 2 elements from each array at a time in memory, record intersections.

转载地址:http://iyqvb.baihongyu.com/

你可能感兴趣的文章
java.lang.OutOfMemoryError: PermGen space及其解决方法
查看>>
如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数?
查看>>
highcharts扩展tooltip提示异步信息
查看>>
activiti--History 历史配置
查看>>
activiti--部署bpmn/bar文件详解
查看>>
win7使用Putty 连接debain
查看>>
debain 常用命令
查看>>
debain 安装amd显卡驱动
查看>>
Java Jacob 打印word文档
查看>>
Java Freemarker 根据模板生成Word
查看>>
Java Mybatis Plus 集成与使用
查看>>
搭建一个Vue项目
查看>>
SVN Working Copy Locked 解决方法
查看>>
2--第四层
查看>>
3--TCP三次握手
查看>>
4--网关
查看>>
4.内存非连续分配管理方式
查看>>
5.虚拟内存的概念、特征以及虚拟内存的实现
查看>>
mmap()函数:建立内存映射
查看>>
munmap()函数:解除内存映射
查看>>