> 文档中心 > Leetcode第 286 场周赛-5268. 找出两数组的不同 ——双百题解

Leetcode第 286 场周赛-5268. 找出两数组的不同 ——双百题解


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;    }}

运行结果截图如下:
运行结果截图