Skip to content

Commit d4e8021

Browse files
committed
feat: add solutions to lc/lcci problems: No.1213,1428,16.01
1 parent 676a753 commit d4e8021

File tree

18 files changed

+808
-16
lines changed

18 files changed

+808
-16
lines changed

lcci/16.01.Swap Numbers/README.md

+31-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
```python
3131
class Solution:
3232
def swapNumbers(self, numbers: List[int]) -> List[int]:
33-
numbers[0], numbers[1] = numbers[1], numbers[0]
33+
numbers[0] ^= numbers[1]
34+
numbers[1] ^= numbers[0]
35+
numbers[0] ^= numbers[1]
3436
return numbers
3537
```
3638

@@ -41,14 +43,39 @@ class Solution:
4143
```java
4244
class Solution {
4345
public int[] swapNumbers(int[] numbers) {
44-
numbers[0] = numbers[0] ^ numbers[1];
45-
numbers[1] = numbers[0] ^ numbers[1];
46-
numbers[0] = numbers[0] ^ numbers[1];
46+
numbers[0] ^= numbers[1];
47+
numbers[1] ^= numbers[0];
48+
numbers[0] ^= numbers[1];
4749
return numbers;
4850
}
4951
}
5052
```
5153

54+
### **C++**
55+
56+
```cpp
57+
class Solution {
58+
public:
59+
vector<int> swapNumbers(vector<int>& numbers) {
60+
numbers[0] ^= numbers[1];
61+
numbers[1] ^= numbers[0];
62+
numbers[0] ^= numbers[1];
63+
return numbers;
64+
}
65+
};
66+
```
67+
68+
### **Go**
69+
70+
```go
71+
func swapNumbers(numbers []int) []int {
72+
numbers[0] ^= numbers[1]
73+
numbers[1] ^= numbers[0]
74+
numbers[0] ^= numbers[1]
75+
return numbers
76+
}
77+
```
78+
5279
### **...**
5380

5481
```

lcci/16.01.Swap Numbers/README_EN.md

+31-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
```python
3232
class Solution:
3333
def swapNumbers(self, numbers: List[int]) -> List[int]:
34-
numbers[0], numbers[1] = numbers[1], numbers[0]
34+
numbers[0] ^= numbers[1]
35+
numbers[1] ^= numbers[0]
36+
numbers[0] ^= numbers[1]
3537
return numbers
3638
```
3739

@@ -40,14 +42,39 @@ class Solution:
4042
```java
4143
class Solution {
4244
public int[] swapNumbers(int[] numbers) {
43-
numbers[0] = numbers[0] ^ numbers[1];
44-
numbers[1] = numbers[0] ^ numbers[1];
45-
numbers[0] = numbers[0] ^ numbers[1];
45+
numbers[0] ^= numbers[1];
46+
numbers[1] ^= numbers[0];
47+
numbers[0] ^= numbers[1];
4648
return numbers;
4749
}
4850
}
4951
```
5052

53+
### **C++**
54+
55+
```cpp
56+
class Solution {
57+
public:
58+
vector<int> swapNumbers(vector<int>& numbers) {
59+
numbers[0] ^= numbers[1];
60+
numbers[1] ^= numbers[0];
61+
numbers[0] ^= numbers[1];
62+
return numbers;
63+
}
64+
};
65+
```
66+
67+
### **Go**
68+
69+
```go
70+
func swapNumbers(numbers []int) []int {
71+
numbers[0] ^= numbers[1]
72+
numbers[1] ^= numbers[0]
73+
numbers[0] ^= numbers[1]
74+
return numbers
75+
}
76+
```
77+
5178
### **...**
5279

5380
```

lcci/16.01.Swap Numbers/Solution.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution {
2+
public:
3+
vector<int> swapNumbers(vector<int>& numbers) {
4+
numbers[0] ^= numbers[1];
5+
numbers[1] ^= numbers[0];
6+
numbers[0] ^= numbers[1];
7+
return numbers;
8+
}
9+
};

lcci/16.01.Swap Numbers/Solution.go

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
func swapNumbers(numbers []int) []int {
2+
numbers[0] ^= numbers[1]
3+
numbers[1] ^= numbers[0]
4+
numbers[0] ^= numbers[1]
5+
return numbers
6+
}

lcci/16.01.Swap Numbers/Solution.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Solution {
22
public int[] swapNumbers(int[] numbers) {
3-
numbers[0] = numbers[0] ^ numbers[1];
4-
numbers[1] = numbers[0] ^ numbers[1];
5-
numbers[0] = numbers[0] ^ numbers[1];
3+
numbers[0] ^= numbers[1];
4+
numbers[1] ^= numbers[0];
5+
numbers[0] ^= numbers[1];
66
return numbers;
77
}
88
}

lcci/16.01.Swap Numbers/Solution.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class Solution:
22
def swapNumbers(self, numbers: List[int]) -> List[int]:
3-
numbers[0], numbers[1] = numbers[1], numbers[0]
3+
numbers[0] ^= numbers[1]
4+
numbers[1] ^= numbers[0]
5+
numbers[0] ^= numbers[1]
46
return numbers

solution/1200-1299/1213.Intersection of Three Sorted Arrays/README.md

+100-1
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,121 @@
3333

3434
<!-- 这里可写通用的实现逻辑 -->
3535

36+
二分查找。
37+
3638
<!-- tabs:start -->
3739

3840
### **Python3**
3941

4042
<!-- 这里可写当前语言的特殊实现逻辑 -->
4143

4244
```python
43-
45+
class Solution:
46+
def arraysIntersection(self, arr1: List[int], arr2: List[int], arr3: List[int]) -> List[int]:
47+
def find(arr, val):
48+
left, right = 0, len(arr) - 1
49+
while left < right:
50+
mid = (left + right) >> 1
51+
if arr[mid] >= val:
52+
right = mid
53+
else:
54+
left = mid + 1
55+
return arr[left] == val
56+
57+
res = []
58+
for num in arr1:
59+
if find(arr2, num) and find(arr3, num):
60+
res.append(num)
61+
return res
4462
```
4563

4664
### **Java**
4765

4866
<!-- 这里可写当前语言的特殊实现逻辑 -->
4967

5068
```java
69+
class Solution {
70+
public List<Integer> arraysIntersection(int[] arr1, int[] arr2, int[] arr3) {
71+
List<Integer> res = new ArrayList<>();
72+
for (int num : arr1) {
73+
if (find(arr2, num) && find(arr3, num)) {
74+
res.add(num);
75+
}
76+
}
77+
return res;
78+
}
79+
80+
private boolean find(int[] arr, int val) {
81+
int left = 0, right = arr.length - 1;
82+
while (left < right) {
83+
int mid = (left + right) >> 1;
84+
if (arr[mid] >= val) {
85+
right = mid;
86+
} else {
87+
left = mid + 1;
88+
}
89+
}
90+
return arr[left] == val;
91+
}
92+
}
93+
```
94+
95+
### **C++**
96+
97+
```cpp
98+
class Solution {
99+
public:
100+
vector<int> arraysIntersection(vector<int>& arr1, vector<int>& arr2, vector<int>& arr3) {
101+
vector<int> res;
102+
for (int num : arr1) {
103+
if (find(arr2, num) && find(arr3, num)) {
104+
res.push_back(num);
105+
}
106+
}
107+
return res;
108+
}
109+
110+
private:
111+
bool find(vector<int>& arr, int val) {
112+
int left = 0, right = arr.size() - 1;
113+
while (left < right) {
114+
int mid = left + right >> 1;
115+
if (arr[mid] >= val) {
116+
right = mid;
117+
} else {
118+
left = mid + 1;
119+
}
120+
}
121+
return arr[left] == val;
122+
}
123+
};
124+
```
51125
126+
### **Go**
127+
128+
```go
129+
func arraysIntersection(arr1 []int, arr2 []int, arr3 []int) []int {
130+
var res []int
131+
for _, num := range arr1 {
132+
if find(arr2, num) && find(arr3, num) {
133+
res = append(res, num)
134+
}
135+
}
136+
return res
137+
}
138+
139+
func find(arr []int, val int) bool {
140+
left, right := 0, len(arr)-1
141+
for left < right {
142+
mid := (left + right) >> 1
143+
if arr[mid] >= val {
144+
right = mid
145+
} else {
146+
left = mid + 1
147+
}
148+
}
149+
return arr[left] == val
150+
}
52151
```
53152

54153
### **...**

solution/1200-1299/1213.Intersection of Three Sorted Arrays/README_EN.md

+100-1
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,117 @@
3333

3434
## Solutions
3535

36+
Binary search.
37+
3638
<!-- tabs:start -->
3739

3840
### **Python3**
3941

4042
```python
41-
43+
class Solution:
44+
def arraysIntersection(self, arr1: List[int], arr2: List[int], arr3: List[int]) -> List[int]:
45+
def find(arr, val):
46+
left, right = 0, len(arr) - 1
47+
while left < right:
48+
mid = (left + right) >> 1
49+
if arr[mid] >= val:
50+
right = mid
51+
else:
52+
left = mid + 1
53+
return arr[left] == val
54+
55+
res = []
56+
for num in arr1:
57+
if find(arr2, num) and find(arr3, num):
58+
res.append(num)
59+
return res
4260
```
4361

4462
### **Java**
4563

4664
```java
65+
class Solution {
66+
public List<Integer> arraysIntersection(int[] arr1, int[] arr2, int[] arr3) {
67+
List<Integer> res = new ArrayList<>();
68+
for (int num : arr1) {
69+
if (find(arr2, num) && find(arr3, num)) {
70+
res.add(num);
71+
}
72+
}
73+
return res;
74+
}
75+
76+
private boolean find(int[] arr, int val) {
77+
int left = 0, right = arr.length - 1;
78+
while (left < right) {
79+
int mid = (left + right) >> 1;
80+
if (arr[mid] >= val) {
81+
right = mid;
82+
} else {
83+
left = mid + 1;
84+
}
85+
}
86+
return arr[left] == val;
87+
}
88+
}
89+
```
90+
91+
### **C++**
92+
93+
```cpp
94+
class Solution {
95+
public:
96+
vector<int> arraysIntersection(vector<int>& arr1, vector<int>& arr2, vector<int>& arr3) {
97+
vector<int> res;
98+
for (int num : arr1) {
99+
if (find(arr2, num) && find(arr3, num)) {
100+
res.push_back(num);
101+
}
102+
}
103+
return res;
104+
}
105+
106+
private:
107+
bool find(vector<int>& arr, int val) {
108+
int left = 0, right = arr.size() - 1;
109+
while (left < right) {
110+
int mid = left + right >> 1;
111+
if (arr[mid] >= val) {
112+
right = mid;
113+
} else {
114+
left = mid + 1;
115+
}
116+
}
117+
return arr[left] == val;
118+
}
119+
};
120+
```
47121
122+
### **Go**
123+
124+
```go
125+
func arraysIntersection(arr1 []int, arr2 []int, arr3 []int) []int {
126+
var res []int
127+
for _, num := range arr1 {
128+
if find(arr2, num) && find(arr3, num) {
129+
res = append(res, num)
130+
}
131+
}
132+
return res
133+
}
134+
135+
func find(arr []int, val int) bool {
136+
left, right := 0, len(arr)-1
137+
for left < right {
138+
mid := (left + right) >> 1
139+
if arr[mid] >= val {
140+
right = mid
141+
} else {
142+
left = mid + 1
143+
}
144+
}
145+
return arr[left] == val
146+
}
48147
```
49148

50149
### **...**

0 commit comments

Comments
 (0)