leet-code/src/main/java/leetcode/editor/cn/IntersectionOfTwoArraysIi.java
2021-07-09 12:14:29 +08:00

72 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给定两个数组,编写一个函数来计算它们的交集。
//
//
//
// 示例 1
//
// 输入nums1 = [1,2,2,1], nums2 = [2,2]
//输出:[2,2]
//
//
// 示例 2:
//
// 输入nums1 = [4,9,5], nums2 = [9,4,9,8,4]
//输出:[4,9]
//
//
//
// 说明:
//
//
// 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
// 我们可以不考虑输出结果的顺序。
//
//
// 进阶:
//
//
// 如果给定的数组已经排好序呢?你将如何优化你的算法?
// 如果 nums1 的大小比 nums2 小很多,哪种方法更优?
// 如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
//
// Related Topics 数组 哈希表 双指针 二分查找 排序
// 👍 512 👎 0
package leetcode.editor.cn;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//350:两个数组的交集 II
class IntersectionOfTwoArraysIi{
public static void main(String[] args) {
//测试代码
Solution solution = new IntersectionOfTwoArraysIi().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
List<Integer> list = new ArrayList<>();
int index1 = 0;
int index2 = 0;
while(index1<nums1.length&&index2<nums2.length){
if(nums1[index1]==nums2[index2]){
list.add(nums1[index1]);
index1++;
index2++;
}else if (nums1[index1]>nums2[index2]){
index2++;
}else{
index1++;
}
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
//leetcode submit region end(Prohibit modification and deletion)
}