题目
给你两个整数数组
nums1
和nums2
,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
解题思路
- 对两个数组进行排序整理;
- 从索引0开始对数组进行遍历,创建List来存储相同的数据;
- 元素相等则添加到List中并且索引都右移一位;
- 元素不相等则小的索引右移大的不变。
代码展示
class Solution { public int[] intersect(int[] nums1, int[] nums2) { Arrays.sort(nums1); Arrays.sort(nums2); int index1 = 0; int index2 = 0; int n = nums1.length; int m = nums2.length; List<Integer> data = new ArrayList<>(); while (index1 < n && index2 < m){ if(nums1[index1] == nums2[index2]){ data.add(nums1[index1]); index1++; index2++; } else if(nums1[index1] > nums2[index2]){ index2++; } else { index1++; } } int[] ans = new int[data.size()]; for (int i = 0; i < data.size(); i++){ ans[i] = data.get(i); } return ans; } }