来源:https://leetcode.com/problems/intersection-of-two-arrays

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.

1. 直接使用HashSet

 class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
Set<Integer> intersect = new HashSet<>();
for(int i=0; i<nums1.length; i++) {
set.add(nums1[i]);
}
for(int i=0; i<nums2.length; i++) {
if(set.contains(nums2[i])) {
intersect.add(nums2[i]);
}
}
int[] result = new int[intersect.size()];
int i = 0;
for(Integer num: intersect) {
result[i++] = num;
}
return result;
}
}// 6 ms

2. 类似BitMap的思想,LeetCode 1ms sample,缺点是数组中的元素不能为负数……

(1)求出两个数组的最大值

(2)建立 长度=最大值+1 的数组A,假设数组的索引为i,那么A[i]的值表示i是否在两个数组中存在,若为0表示不存在于任何一个数组中,为1表示存在于第一个数组中,为2表示两个数组中都存在

 class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
int max = 0;
for(int num: nums1) {
if(num > max) {
max = num;
}
}
for(int num: nums2) {
if(num > max) {
max = num;
}
}
int[] indexMap = new int[max+1];
for(int num: nums1) {
indexMap[num] = 1;
}
int cnt = 0;
for(int num: nums2) {
if(indexMap[num] == 1) {
indexMap[num] = 2;
cnt++;
}
}
int[] result = new int[cnt];
for(int i=0; i<max+1; i++) {
if(indexMap[i] == 2) {
result[--cnt] = i;
}
}
return result;
}
}

最新文章

  1. 用collectionview实现瀑布流-转(后面附demo,供参考)
  2. sql
  3. Linux 循环
  4. 纸上谈兵:哈希表(hash table)
  5. 41.Android之图片放大缩小学习
  6. Ultra Edit常用正则表达式
  7. 个人笔记--Servlet之过滤器实现权限拦截
  8. bzoj 2852: 强大的区间 辗转相除
  9. (转)javascript组件开发方式
  10. 浅谈Spring(一)
  11. Linux基础正则表达式:grep,sed
  12. C各个类型的大小
  13. 漫谈Java IO之基础篇
  14. 实验二《Java面向对象程序设计》实验报告
  15. 2018年12月8日广州.NET微软技术俱乐部活动总结
  16. Revit二次开发: 文件损坏
  17. Leetcode 215. 数组中的第K个最大元素 By Python
  18. Sql批量修改帝国cms文章发布时间(需unix时间,否则会变为1970-01-01)
  19. php isset+{} 判断字符串长度比strlen效率高
  20. 蒙特卡洛模拟(Monte Carlo simulation)

热门文章

  1. Kendo UI for jQuery使用教程:支持Web浏览器
  2. DevExpress Winforms Controls:安装使用系统要求文档
  3. C++、java、python的一些区别
  4. Win10看图总有遮挡?如何找回好用的照片查看器
  5. Java面试之框架篇(9)
  6. 12. ClustrixDB 为容错和可用性分配磁盘空间
  7. Java多级文件夹上传
  8. Codeforces 960F Pathwalks ( LIS &amp;&amp; 树状数组 )
  9. 2019hdu多校 Keen On Everything But Triangle
  10. codevs 1255 搭积木 x