Leetcode第 286 场周赛-5268. 找出两数组的不同
missingRolls
一、解题思路
1、解法一( Java )
解法思路:模拟 + HashSet去重
HashSet去重
set.remove()
如果指定元素存在于此 set
中,则将其移除。
伪代码如下:
/**
* @author Listen 1024
* @description Leetcode第 286 场周赛-5268. 找出两数组的不同
* @date 2022-03-27 11:01
*/
class Solution{
public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
List<List<Integer>> ans = new ArrayList<>();
//HashSet去重 set.remove()方法
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for (int num : nums1) {
set1.add(num);
}
for (int num : nums2) {
set2.add(num);
if (set1.contains(num)) {
set1.remove(num);
}
}
for (int num : nums1) {
if (set2.contains(num)) {
set2.remove(num);
}
}
ans.add(new ArrayList(set1));
ans.add(new ArrayList(set2));
return ans;
}
}
1、解法二( Java )
解法思路:模拟
伪代码如下:
/**
* @author Listen 1024
* @description Leetcode第 286 场周赛-5268. 找出两数组的不同
* @date 2022-03-27 11:01
*/
class Solution {
public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
List<List<Integer>> ans = new ArrayList<>();
//List用于存放两个数组不同于对方的数据
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
//Set用于存储两个数组中的完整数据
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for (int num : nums1) {
set1.add(num);
}
for (int num : nums2) {
set2.add(num);
}
for (int num : nums1) {
// if( !set2.contains(num) && !list1.contains(num) ){
// list1.add(num);
// }
if (!set2.contains(num)) {
list1.add(num);
if (list1.contains(num)) {
list1.remove(num);
}
}
}
for (int num : nums2) {
if (!set1.contains(num) && !list2.contains(num)) {
list2.add(num);
}
}
ans.add(list1);
ans.add(list2);
return ans;
}
}
运行结果截图如下: