Easy
,Array
,Hash Table
2215. Find the Difference of Two Arrays
Given two 0-indexed integer arrays nums1
and nums2
, return a list answer
of size 2
where:
answer[0]
is a list of all distinct integers in nums1
which are not present in nums2
.answer[1]
is a list of all distinct integers in nums2
which are not present in nums1
.Note that the integers in the lists may be returned in any order.
Example 1:
Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]
Explanation:
For nums1, nums1[1] = 2 is present at index 0 of nums2, whereas nums1[0] = 1 and nums1[2] = 3 are not present in nums2. Therefore, answer[0] = [1,3].
For nums2, nums2[0] = 2 is present at index 1 of nums1, whereas nums2[1] = 4 and nums2[2] = 6 are not present in nums2. Therefore, answer[1] = [4,6].
Example 2:
Input: nums1 = [1,2,3,3], nums2 = [1,1,2,2]
Output: [[3],[]]
Explanation:
For nums1, nums1[2] and nums1[3] are not present in nums2. Since nums1[2] == nums1[3], their value is only included once and answer[0] = [3].
Every integer in nums2 is present in nums1. Therefore, answer[1] = [].
Constraints:
nums1.length
, nums2.length
<= 1000nums1[i]
, nums2[i]
<= 1000
function findDifference(nums1: number[], nums2: number[]): number[][] {
const set1 = new Set(nums1);
const set2 = new Set(nums2);
set1.forEach((item) => {
if (set2.has(item)) {
set2.delete(item);
set1.delete(item);
}
});
return [[...set1], [...set2]];
}
SheepWed, May 3, 2023
function findDifference(nums1, nums2) {
const set1 = new Set(nums1);
const set2 = new Set(nums2);
for (const item of set1) {
if (set2.has(item)) {
set1.delete(item);
set2.delete(item);
}
}
return [[...set1], [...set2]];
}
慚愧,跟我弟學習了,本來用set1去刪set2然後再用set2刪set1,不止要做兩遍還要多建一個set根本87
MarsgoatWed, May 3, 2023
class Solution:
def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
return [list(set(nums1) - set(nums2)), list(set(nums2) - set(nums1))]
Ron ChenWed, May 3, 2023
public IList<IList<int>> FindDifference(int[] nums1, int[] nums2) {
HashSet<int> set1 = new HashSet<int>(nums1);
HashSet<int> set2 = new HashSet<int>(nums2);
foreach(int num in set2) {
if (set1.Contains(num)) {
set1.Remove(num);
set2.Remove(num);
}
}
return new List<IList<int>>(){ set1.ToList(), set2.ToList()};
}
JimWed, May 3, 2023
class Solution {
public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for(Integer num : nums1) {
set1.add(num);
}
for(Integer num : nums2) {
set2.add(num);
}
Set<Integer> difference1 = new HashSet<>(set1);
difference1.removeAll(set2);
Set<Integer> difference2 = new HashSet<>(set2);
difference2.removeAll(set1);
List<List<Integer>> ans = new ArrayList<>();
ans.add(difference1.stream().toList());
ans.add(difference2.stream().toList());
return ans;
}
}
只能醜醜寫的我
Ron ChenWed, May 3, 2023
class Solution {
public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
Set<Integer> set1 = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
// Delete nums2 element which in set1 and assign to set2
Set<Integer> set2 = Arrays.stream(nums2).filter(n -> !set1.contains(n)).boxed().collect(Collectors.toSet());
// Delete set1 element which in nums2
Arrays.stream(nums2).forEach(set1::remove);
return Arrays.asList(new ArrayList<>(set1), new ArrayList<>(set2));
}
}
解答區看到的 Java Stream API 用法,太猛了