1、给定两个数组,编写一个函数来计算它们的交集。
示例 1:
1 输入: nums1 = [1,2,2,1], nums2 = [2,2]
2 输出: [2]
示例 2:
1 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
2 输出: [9,4]
说明:
2、解题思路和代码如下所示:
1 package com.leetcode;
2
3
4 import java.util.*;
5
6 /**
7 * @ProjectName: dataConstruct
8 * @Package: com.leetcode
9 * @ClassName: ArrayIntersection
10 * @Author: biehl
11 * @Description: ${description}
12 * @Date: 2020/3/15 10:55
13 * @Version: 1.0
14 */
15 public class ArrayIntersection {
16
17 /**
18 * 给定两个数组,编写一个函数来计算它们的交集。
19 *
20 * @param nums1
21 * @param nums2
22 * @return
23 */
24 public int[] intersection(int[] nums1, int[] nums2) {
25 // 将数组nums1的元素数据放入到集合Set中
26 Set<Integer> setNums1 = new TreeSet<Integer>();
27 // for (int i = 0; i < nums1.length; i++) {
28 // setNums1.add(nums1[i]);
29 // }
30 for (int num : nums1) {
31 setNums1.add(num);
32 }
33
34
35 // 将数组nums2的元素数据放入到集合Set中
36 Set<Integer> setNums2 = new TreeSet<Integer>();
37 // for (int i = 0; i < nums2.length; i++) {
38 // setNums2.add(nums2[i]);
39 // }
40 for (int num : nums2) {
41 setNums2.add(num);
42 }
43
44 List<Integer> result = new ArrayList<Integer>();
45 // 开始遍历,查看第一个集合中的元素在第二个集合中有多少个
46 Iterator<Integer> iterator = setNums1.iterator();
47 while (iterator.hasNext()) {
48 Integer next = iterator.next();
49 // 如果第一个集合中的元素在第二个集合中,就进行保存操作
50 if (setNums2.contains(next)) {
51 result.add(next);
52 }
53 }
54
55 int[] res = new int[result.size()];
56 for (int i = 0; i < result.size(); i++) {
57 res[i] = result.get(i);
58 }
59 return res;
60 }
61
62
63 /**
64 * 给定两个数组,编写一个函数来计算它们的交集。
65 *
66 * @param nums1
67 * @param nums2
68 * @return
69 */
70 public int[] intersection2(int[] nums1, int[] nums2) {
71 // 将数组nums1的元素数据放入到集合Set中
72 Set<Integer> setNums1 = new TreeSet<Integer>();
73 for (int num : nums1) {
74 setNums1.add(num);
75 }
76
77 // 声明一个动态数组,存放将要返回的数据
78 List<Integer> result = new ArrayList<Integer>();
79 for (int num : nums2) {
80 // 如果包含了这个元素
81 if (setNums1.contains(num)) {
82 // 将这个交集元素存储到动态数组中
83 result.add(num);
84 // 为了避免出现重复数据,可以将setNums1集合中重复的数据删除掉。下次就不会出现重复的数据了。
85 setNums1.remove(num);
86 }
87 }
88
89 // 将动态数据中的数据,封装返回即可
90 int[] res = new int[result.size()];
91 for (int i = 0; i < result.size(); i++) {
92 res[i] = result.get(i);
93 }
94 return res;
95 }
96
97 public static void main(String[] args) {
98 // int[] nums1 = new int[]{1, 2, 2, 1};
99 // int[] nums2 = {2, 2};
100 int[] nums1 = new int[]{4, 9, 5};
101 int[] nums2 = {9, 4, 9, 8, 4};
102 ArrayIntersection arrayIntersection = new ArrayIntersection();
103 int[] intersection = arrayIntersection.intersection2(nums1, nums2);
104 for (int i = 0; i < intersection.length; i++) {
105 System.out.println(intersection[i]);
106 }
107 }
108
109 }
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有