349. Intersection of Two Arrays双指针|二分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了349. Intersection of Two Arrays双指针|二分相关的知识,希望对你有一定的参考价值。

2017/3/23 15:41:47

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

Example:
Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2].

Note:

  • Each element in the result must be unique.
  • The result can be in any order.

 
作弊版:Python
  1. classSolution(object):
  2. def intersection(self, nums1, nums2):
  3. return list(set( nums1 )& set(nums2))
 
版本1:Java  O(m*n)  循环检查  
  1. publicclassSolution{
  2. publicint[] intersection(int[] nums1,int[] nums2){
  3. Set<Integer> set =newHashSet<Integer>();
  4. for(int i=0;i<nums1.length;i++)
  5. for(int j=0;j<nums2.length;j++)
  6. if( nums1[i]== nums2[j]){
  7. set.add(nums1[i]);
  8. break;
  9. }
  10. Object[] obj = set.toArray();
  11. int[] rs =newint[obj.length];
  12. for(int i=0;i<obj.length;i++)
  13. rs[i]=(int)obj[i];
  14. return rs;
  15. }
  16. }
 
版本2:Java  O(m+n)  借助哈希表+Set,或者双Set
  1. publicint[] intersection(int[] nums1,int[] nums2){
  2. Map<Integer,Boolean> map =newHashtable<Integer,Boolean>();
  3. Set<Integer> set =newTreeSet<Integer>();
  4. for(int i=0;i<nums1.length;i++)
  5. map.put( nums1[i],true);
  6. for(int j=0;j<nums2.length;j++){
  7. if(map.get(nums2[j])==null)continue;
  8. set.add(nums2[j]);
  9. }
  10. int i =0;
  11. int[] rs =newint[set.size()];
  12. for(Integer num : set )
  13. rs[i++]= num;
  14. return rs;
  15. }
 
 

以上是关于349. Intersection of Two Arrays双指针|二分的主要内容,如果未能解决你的问题,请参考以下文章

349. Intersection of Two Arrays

349. Intersection of Two Arrays

Leetcode 349. Intersection of Two Arrays

[leetcode]349.Intersection of Two Arrays

349. Intersection of Two Arrays

Leetcode-349 Intersection of Two Arrays