LeetCode 350. Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection.
Example:Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2, 2]
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?
Subscribe to see which companies asked this question.

题目

计算两个数组的交

样例
nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

分析

这道题是上一道题的扩展,只是这次要记录重复的元素的个数,这次我们就用一个哈希表,键记录重复元素,值记录重复个数就行了。采用hashset的方法

代码

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
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        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);
        }

        List<Integer> results = new ArrayList<Integer>();

        for (int i = 0; i < nums2.length; ++i)
            if (map.containsKey(nums2[i]) &&
                map.get(nums2[i]) > 0) {
                results.add(nums2[i]);
                map.put(nums2[i], map.get(nums2[i]) - 1); 
            }

        int result[] = new int[results.size()];
        for(int i = 0; i < results.size(); ++i)
            result[i] = results.get(i);

        return result;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode题目链接 注意:凡是以英文出现的,都是题目提供的,包括答案代码里的前几行。 题目: Given t...
    _Xie_阅读 3,184评论 0 0
  • 目前支持的平台有Pre.im、豌豆荚、应用宝,超简单实现,调用DownLoadManager做下载,有什么好的建议...
    BertSir阅读 4,042评论 0 5
  • 今天是我出国满一年的日子。没什么特别的感想,换了个地方吃饭睡觉自拍罢了。当然,能在雪地里照相,我是很高兴的。 这1...
    肥杰西阅读 5,809评论 6 24
  • 前段时间发生了一件让我们所有人深恶痛绝的事,在山东临沂一个18岁的女大学生名叫许玉玉,好不容易考上了南京的邮电大学...
    三个悟空阅读 3,089评论 0 1
  • 书叫《慢决策:如何在极速时代掌握慢思考的力量》。 分享三部分内容: 一,延迟决策、 意思有两个,延迟做决定的时...
    李红烨阅读 1,189评论 1 2