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; }}
运行结果截图如下: