Skip to content

Commit 01f5bd0

Browse files
committedNov 17, 2022
leetcode
1 parent 5f9211e commit 01f5bd0

File tree

4 files changed

+314
-0
lines changed

4 files changed

+314
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/*
2+
3+
-* 349. Intersection of Two Arrays *-
4+
5+
6+
Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.
7+
8+
9+
10+
Example 1:
11+
12+
Input: nums1 = [1,2,2,1], nums2 = [2,2]
13+
Output: [2]
14+
Example 2:
15+
16+
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
17+
Output: [9,4]
18+
Explanation: [4,9] is also accepted.
19+
20+
21+
Constraints:
22+
23+
1 <= nums1.length, nums2.length <= 1000
24+
0 <= nums1[i], nums2[i] <= 1000
25+
26+
27+
*/
28+
29+
import 'dart:collection';
30+
31+
class A {
32+
List<int> intersection(List<int> nums1, List<int> nums2) {
33+
HashSet<int> hashSet = HashSet();
34+
nums1.sort();
35+
nums2.sort();
36+
int i = 0;
37+
int j = 0;
38+
while (i < nums1.length && j < nums2.length) {
39+
if (nums1[i] < nums2[j]) {
40+
i++;
41+
} else if (nums1[i] > nums2[j]) {
42+
j++;
43+
} else {
44+
hashSet.add(nums1[i]);
45+
i++;
46+
j++;
47+
}
48+
}
49+
List<int> result = List.filled(hashSet.length, 0);
50+
int k = 0;
51+
for (int number in hashSet) {
52+
result[k++] = number;
53+
}
54+
return result;
55+
}
56+
}
57+
58+
class B {
59+
List<int> intersection(List<int> nums1, List<int> nums2) {
60+
HashSet hashSet = HashSet();
61+
for (int i = 0; i < nums1.length; i++) {
62+
hashSet.add(nums1[i]);
63+
}
64+
List<int> arr = [];
65+
for (int i = 0; i < nums2.length; i++) {
66+
if (hashSet.contains(nums2[i])) {
67+
arr.add(nums2[i]);
68+
hashSet.remove(nums2[i]);
69+
}
70+
}
71+
return arr;
72+
}
73+
}
74+
75+
class C {
76+
List<int> intersection(List<int> nums1, List<int> nums2) {
77+
HashSet<int> hashSet = new HashSet();
78+
nums2.sort();
79+
for (int number in nums1) {
80+
if (binarySearch(nums2, number)) {
81+
hashSet.add(number);
82+
}
83+
}
84+
int i = 0;
85+
List<int> result = List.filled(hashSet.length, 0);
86+
for (int number in hashSet) {
87+
result[i++] = number;
88+
}
89+
return result;
90+
}
91+
92+
bool binarySearch(List<int> nums, int target) {
93+
int low = 0;
94+
int high = nums.length - 1;
95+
while (low <= high) {
96+
int mid = low + (high - low) ~/ 2;
97+
if (nums[mid] == target) {
98+
return true;
99+
}
100+
if (nums[mid] > target) {
101+
high = mid - 1;
102+
} else {
103+
low = mid + 1;
104+
}
105+
}
106+
return false;
107+
}
108+
}
109+
110+
class D {
111+
List<int> intersection(List<int> nums1, List<int> nums2) {
112+
List<int> result = [];
113+
if (nums1.isEmpty || nums2.isEmpty) return result;
114+
115+
nums1.sort();
116+
nums2.sort();
117+
118+
for (int i = 0, j = 0; i < nums1.length && j < nums2.length;) {
119+
if (nums1[i] == nums2[j]) {
120+
int size = result.length;
121+
i++;
122+
j++;
123+
if (size != 0 && result.elementAt(size - 1) == nums1[i - 1]) continue;
124+
result.add(nums1[i - 1]);
125+
} else if (nums1[i] < nums2[j])
126+
i++;
127+
else
128+
j++;
129+
}
130+
return result;
131+
}
132+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import "sort"
4+
5+
func intersection(nums1 []int, nums2 []int) []int {
6+
numSet := make([]int, 1001)
7+
8+
for _, num := range nums1 {
9+
numSet[num]++
10+
}
11+
12+
resultSet := make([]int, 1001)
13+
14+
for _, num := range nums2 {
15+
if numSet[num] > 0 {
16+
resultSet[num]++
17+
}
18+
}
19+
20+
var res []int
21+
22+
for i := 0; i < 1001; i++ {
23+
if resultSet[i] > 0 {
24+
res = append(res, i)
25+
}
26+
}
27+
28+
return res
29+
}
30+
31+
// Solution - 2
32+
func interSection(nums1 []int, nums2 []int) []int {
33+
var result []int
34+
if nums1 == nil || nums2 == nil {
35+
return result
36+
}
37+
sort.Ints(nums1)
38+
sort.Ints(nums2)
39+
for i, j := 0, 0; i < len(nums1) && j < len(nums2); {
40+
if nums1[i] == nums2[j] {
41+
var size int = len(result)
42+
i++
43+
j++
44+
if size != 0 && result[size-1] == nums1[i-1] {
45+
continue
46+
}
47+
result = append(result, nums1[i-1])
48+
} else if nums1[i] < nums2[j] {
49+
i++
50+
} else {
51+
j++
52+
}
53+
}
54+
return result
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# 🔥 Intersection of Two Arrays 🔥 || 4 Approaches || Simple Fast and Easy || with Explanation
2+
3+
## Solution - 1
4+
5+
```dart
6+
import 'dart:collection';
7+
8+
class Solution {
9+
List<int> intersection(List<int> nums1, List<int> nums2) {
10+
HashSet<int> hashSet = HashSet();
11+
nums1.sort();
12+
nums2.sort();
13+
int i = 0;
14+
int j = 0;
15+
while (i < nums1.length && j < nums2.length) {
16+
if (nums1[i] < nums2[j]) {
17+
i++;
18+
} else if (nums1[i] > nums2[j]) {
19+
j++;
20+
} else {
21+
hashSet.add(nums1[i]);
22+
i++;
23+
j++;
24+
}
25+
}
26+
List<int> result = List.filled(hashSet.length, 0);
27+
int k = 0;
28+
for (int number in hashSet) {
29+
result[k++] = number;
30+
}
31+
return result;
32+
}
33+
}
34+
```
35+
36+
## Solution - 2
37+
38+
```dart
39+
import 'dart:collection';
40+
41+
class Solution {
42+
List<int> intersection(List<int> nums1, List<int> nums2) {
43+
HashSet hashSet = HashSet();
44+
for (int i = 0; i < nums1.length; i++) {
45+
hashSet.add(nums1[i]);
46+
}
47+
List<int> arr = [];
48+
for (int i = 0; i < nums2.length; i++) {
49+
if (hashSet.contains(nums2[i])) {
50+
arr.add(nums2[i]);
51+
hashSet.remove(nums2[i]);
52+
}
53+
}
54+
return arr;
55+
}
56+
}
57+
```
58+
59+
## Solution - 3
60+
61+
```dart
62+
import 'dart:collection';
63+
64+
class Solution {
65+
List<int> intersection(List<int> nums1, List<int> nums2) {
66+
HashSet<int> hashSet = HashSet();
67+
nums2.sort();
68+
for (int number in nums1) {
69+
if (binarySearch(nums2, number)) {
70+
hashSet.add(number);
71+
}
72+
}
73+
int i = 0;
74+
List<int> result = List.filled(hashSet.length, 0);
75+
for (int number in hashSet) {
76+
result[i++] = number;
77+
}
78+
return result;
79+
}
80+
81+
bool binarySearch(List<int> nums, int target) {
82+
int low = 0;
83+
int high = nums.length - 1;
84+
while (low <= high) {
85+
int mid = low + (high - low) ~/ 2;
86+
if (nums[mid] == target) {
87+
return true;
88+
}
89+
if (nums[mid] > target) {
90+
high = mid - 1;
91+
} else {
92+
low = mid + 1;
93+
}
94+
}
95+
return false;
96+
}
97+
}
98+
```
99+
100+
## Solution - 4
101+
102+
```dart
103+
class Solution {
104+
List<int> intersection(List<int> nums1, List<int> nums2) {
105+
List<int> result = [];
106+
if (nums1.isEmpty || nums2.isEmpty) return result;
107+
108+
nums1.sort();
109+
nums2.sort();
110+
111+
for (int i = 0, j = 0; i < nums1.length && j < nums2.length;) {
112+
if (nums1[i] == nums2[j]) {
113+
int size = result.length;
114+
i++;
115+
j++;
116+
if (size != 0 && result.elementAt(size - 1) == nums1[i - 1]) continue;
117+
result.add(nums1[i - 1]);
118+
} else if (nums1[i] < nums2[j])
119+
i++;
120+
else
121+
j++;
122+
}
123+
return result;
124+
}
125+
}
126+
```

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ This repo contain leetcode solution using DART and GO programming language. Most
132132
- [**374.** Guess Number Higher or Lower](GuessNumberHigherOrLower/guess_number_higher_or_lower.dart)
133133
- [**342.** Power of Four](PowerOfFour/power_of_four.dart)
134134
- [**344.** Reverse String](ReverseString/reverse_string.dart)
135+
- [**349.** Intersection of Two Arrays](IntersectionOfTwoArrays/intersection_of_two_arrays.dart)
135136

136137
## Reach me via
137138

0 commit comments

Comments
 (0)
Please sign in to comment.