leetcode:Intersection of Two Arrays
来源:互联网 发布:wow 1.12数据库 编辑:程序博客网 时间:2024/05/20 01:09
349. Intersection of Two Arrays
My SubmissionsTotal Accepted: 16575 Total Submissions: 36982 Difficulty: Easy
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.
方法一:复杂度O(n)
普遍的方法:通过两个数组的遍历实现。
import java.util.HashSet;import java.util.Set;public class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> temp = new HashSet<Integer>(); for(int i = 0; i < nums1.length; i ++) { for(int j = 0; j < nums2.length; j ++) { if(nums1[i] == nums2[j]) { temp.add(nums1[i]); } } } int[] solution = new int[temp.size()]; int j = 0; for(Integer i:temp) { solution[j] = i; j++; } return solution; }}普遍的方法:通过两个set集合的遍历实现。
为什么用set集合?
Collection
--List:有顺序,能重复
--ArrayList / LinkedList / Vector
--Set :无顺序,不能重复
--HashSet / TreeSet
--List:有顺序,能重复
--ArrayList / LinkedList / Vector
--Set :无顺序,不能重复
--HashSet / TreeSet
import java.util.HashSet;import java.util.Set;public class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<Integer>(); Set<Integer> set2 = new HashSet<Integer>(); for(int c: nums1) { set1.add(c); } for(int c:nums2) { if(set1.contains(c)) { set2.add(c); } } int[] temp = new int[set2.size()]; int j = 0; for(Integer c:set2) { temp[j] = c; j ++; } return temp; }}方法二:复杂度O(logn)
import java.util.HashSet;import java.util.Set;import java.util.Arrays; public class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<Integer>(); Arrays.sort(nums1); Arrays.sort(nums2); int i = 0; int j = 0; while((i < nums1.length) && (j < nums2.length)) { if(nums1[i] < nums2[j]) { i ++; } else if(nums1[i] > nums2[j]){ j ++; } else { set1.add(nums1[i]); i ++; j ++; } } int z = 0; int[] solution = new int[set1.size()]; for(Integer c: set1) { solution[z] = c; z ++; } return solution; }}查找两个数组的相同元素,可以先排序,在进行数组比较,这是很好的一个办法。
0 0
- [LeetCode] Intersection of Two Arrays
- LeetCode Intersection of Two Arrays
- LeetCode:Intersection of Two Arrays
- 【leetcode】Intersection of Two Arrays
- leetcode Intersection of Two Arrays
- 【leetcode】Intersection of Two Arrays
- leetcode:Intersection of Two Arrays
- [Leetcode]Intersection of Two Arrays
- LeetCode:Intersection of Two Arrays
- LeetCode: Intersection of Two Arrays
- leetcode ----Intersection of Two Arrays
- LeetCode Intersection of Two Arrays
- [Leetcode] Intersection of Two Arrays
- LEETCODE--Intersection of Two Arrays
- LeetCode : Intersection of Two Arrays
- leetcode---Intersection of Two Arrays
- leetCode---Intersection of Two Arrays
- leetcode[Intersection of Two Arrays]
- Java线程常用的操作方法
- 最长递增子序列
- html5 drop drag实现购物车加入书
- java学习笔记:管道流PipedInputStream和PipedOutputStream
- 由工业4.0想到的
- leetcode:Intersection of Two Arrays
- RN学习过程中遇到的问题记录
- 面试题
- 全面解析Linux 内核 3.10.x - 调度算法 - Linux 调度器
- Java面向对象
- D
- leetcode-java-31. Next Permutation
- 基于 Jython 的大型应用系统动态实现
- DOS功能调用一览表