题目一:
给定两个数组,编写一个函数来计算它们的交集。
示例 :
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]
代码:
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
int l1=0;
int l2=0;
Set<Integer> s=new HashSet();
while(l1<nums1.length&&l2<nums2.length){
if(nums1[l1]!=nums2[l2]){
if(nums1[l1]>nums2[l2]){
l2++;
}else{
l1++;
}
}else{
s.add(nums1[l1]);
l1++;
l2++;
}
}
Object[] o=s.toArray();
int[] result=new int[o.length];
for(int i=0;i<o.length;i++){
result[i]=(int)o[i];
}
return result;
}
}
题目二:
给定两个数组,编写一个函数来计算它们的交集。
示例 :
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
代码:其实把set换成list就行了
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
int l1=0;
int l2=0;
List<Integer> s=new ArrayList();
while(l1<nums1.length&&l2<nums2.length){
if(nums1[l1]!=nums2[l2]){
if(nums1[l1]>nums2[l2]){
l2++;
}else{
l1++;
}
}else{
s.add(nums1[l1]);
l1++;
l2++;
}
}
Object[] o=s.toArray();
int[] result=new int[o.length];
for(int i=0;i<o.length;i++){
result[i]=(int)o[i];
}
return result;
}
}