[leetcode] 350. Intersection of Two Arrays II

原创 2016年05月31日 03:52:57

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.

Solution

Idea: hash table O(m + n) Space: O(m + n)
class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> ret;
        unordered_map<int,int> h;
        for(int i=0; i<nums1.size();i++)
            ++h[nums1[i]];
        
        for(int j=0; j<nums2.size();j++){
            if(h[nums2[j]]>0){
                ret.push_back(nums2[j]);
                h[nums2[j]]--;
            }
        }
        return ret;
        
    }
};

Follow up 1: What if the given array is already sorted? How would you optimize your algorithm? 
Solution: O(max(m, n) log(max(m, n))) Space: O(m + n)
class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> ret;
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        int i = 0,j = 0;
        while (i<nums1.size() && j<nums2.size()){
            if (nums1[i]==nums2[j]){
                ret.push_back(nums1[i]);
                i++; 
                j++;
            }
            else if (nums1[i]>nums2[j]) j++;
            else i++;
        }
        return ret;
    }
};



版权声明:本文为博主原创文章,未经博主允许不得转载。

Intersection of Two Arrays II两个数组交集(重要!)

https://leetcode.com/problems/intersection-of-two-arrays-ii/ Given two arrays, write a function ...
  • gao1440156051
  • gao1440156051
  • 2016年06月26日 23:21
  • 1463

【LeetCode-面试算法经典-Java实现】【160-Intersection of Two Linked Lists(单链表的交集)】

【160-Intersection of Two Linked Lists(单链表的交集)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Write a program ...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月22日 06:45
  • 3201

两个有序数组的中位数Median of Two Sorted Arrays(很重要)

https://leetcode.com/problems/median-of-two-sorted-arrays/ 对于一个长度为n的已排序数列a,若n为奇数,中位数为a[n / 2 + 1]...
  • gao1440156051
  • gao1440156051
  • 2016年06月21日 11:11
  • 3272

【python】【leetcode】【算法题目2—Add Two Numbers】

【python】【leetcode】【算法题目2—Add Two Numbers】 题目原文: You are given two linked lists representing two non-...
  • u014615155
  • u014615155
  • 2016年11月21日 12:05
  • 1792

leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)

c++刷leetcode,有题目和算法代码,可直接在leetcode提交通过。
  • GOGO_YAO
  • GOGO_YAO
  • 2016年07月24日 20:59
  • 546

【LeetCode编程学习(C语言)】1.Two Sum

LeetCode编程之简单篇,两个数求和,采用穷举和hash对比
  • yake827
  • yake827
  • 2016年03月28日 13:39
  • 4295

Intersection of Two Arrays(两数组的交叉元素)

Given two arrays, write a function to compute their intersection.(给定两个数组,计算它们的交叉元素)Example: Given n...
  • ajiangfan
  • ajiangfan
  • 2016年09月26日 11:40
  • 236

【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】

【113-Path Sum II(路径和II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree and a sum, find al...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月12日 06:23
  • 2502

寻找两个数组的中位数 Median of Two Sorted Arrays ***问题转化思想***

题目源自于Leetcode。经典好题。 题目: There are two sorted arrays A and B of size m and n respectively. Find the ...
  • u012239334
  • u012239334
  • 2013年11月20日 14:46
  • 719

leetcode 1: 找出两个数相加等于给定数 two sum

问题描述对于一个给定的数组,找出2个数,它们满足2个数的和等于一个特定的数,返回这两个数的索引。(从1开始) Given an array of integers, find two numbers...
  • quzhongxin
  • quzhongxin
  • 2015年04月24日 11:08
  • 1499
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 350. Intersection of Two Arrays II
举报原因:
原因补充:

(最多只允许输入30个字)