Skip to content

Commit a899e74

Browse files
committed
feat: add solutions to lc/lcof problems
1 parent a18ff6d commit a899e74

File tree

15 files changed

+226
-94
lines changed

15 files changed

+226
-94
lines changed

lcci/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,4 @@
124124

125125
## 版权
126126

127-
著作权归 [GitHub 开源社区 Doocs](https://github.com/doocs) 所有,商业转载请联系 [@yanglbme](mailto:contact@yanglibin.info) 授权,非商业转载请注明出处。
127+
著作权归 [GitHub 开源社区 Doocs](https://github.com/doocs) 所有,商业转载请联系 [@yanglbme](mailto:contact@yanglibin.info) 获得授权,非商业转载请注明出处。

lcof/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,4 @@
9292

9393
## 版权
9494

95-
著作权归 [GitHub 开源社区 Doocs](https://github.com/doocs) 所有,商业转载请联系 [@yanglbme](mailto:contact@yanglibin.info) 授权,非商业转载请注明出处。
95+
著作权归 [GitHub 开源社区 Doocs](https://github.com/doocs) 所有,商业转载请联系 [@yanglbme](mailto:contact@yanglibin.info) 获得授权,非商业转载请注明出处。

lcof/面试题04. 二维数组中的查找/README.md

+41-37
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,18 @@ class Solution:
6060
class Solution {
6161
public boolean findNumberIn2DArray(int[][] matrix, int target) {
6262
int m, n;
63-
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) return false;
64-
int i = 0, j = n - 1;
65-
while (i < m && j >= 0) {
66-
if (matrix[i][j] == target) return true;
67-
if (matrix[i][j] > target) --j;
68-
else ++i;
63+
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) {
64+
return false;
65+
}
66+
for (int i = 0, j = n - 1; i < m && j >= 0;) {
67+
if (matrix[i][j] == target) {
68+
return true;
69+
}
70+
if (matrix[i][j] < target) {
71+
++i;
72+
} else {
73+
--j;
74+
}
6975
}
7076
return false;
7177
}
@@ -81,45 +87,43 @@ class Solution {
8187
* @return {boolean}
8288
*/
8389
var findNumberIn2DArray = function (matrix, target) {
84-
let m, n;
85-
if (
86-
matrix == null ||
87-
(m = matrix.length) == 0 ||
88-
matrix[0] == null ||
89-
(n = matrix[0].length) == 0
90-
)
90+
let m, n;
91+
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) {
92+
return false;
93+
}
94+
for (let i = 0, j = n - 1; i < m && j >= 0;) {
95+
if (matrix[i][j] == target) {
96+
return true;
97+
}
98+
if (matrix[i][j] < target) {
99+
++i;
100+
} else {
101+
--j;
102+
}
103+
}
91104
return false;
92-
let i = 0,
93-
j = n - 1;
94-
while (i < m && j >= 0) {
95-
if (matrix[i][j] == target) return true;
96-
if (matrix[i][j] > target) --j;
97-
else ++i;
98-
}
99-
return false;
100105
};
101106
```
102107

103108
### **Go**
104109

105110
```go
106111
func findNumberIn2DArray(matrix [][]int, target int) bool {
107-
if len(matrix) == 0 {
108-
return false
109-
}
110-
rows, cols := len(matrix), len(matrix[0])
111-
i, j := rows - 1, 0
112-
for i >= 0 && j < cols {
113-
if matrix[i][j] == target {
114-
return true
115-
}
116-
if matrix[i][j] > target {
117-
i--
118-
} else {
119-
j++
120-
}
121-
}
122-
return false
112+
if len(matrix) == 0 {
113+
return false
114+
}
115+
m, n := len(matrix), len(matrix[0])
116+
for i, j := 0, n-1; i < m && j >= 0; {
117+
if matrix[i][j] == target {
118+
return true
119+
}
120+
if matrix[i][j] < target {
121+
i++
122+
} else {
123+
j--
124+
}
125+
}
126+
return false
123127
}
124128
```
125129

Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
func findNumberIn2DArray(matrix [][]int, target int) bool {
2-
if len(matrix) == 0 {
3-
return false
4-
}
5-
rows, cols := len(matrix), len(matrix[0])
6-
i, j := rows - 1, 0
7-
for i >= 0 && j < cols {
8-
if matrix[i][j] == target {
9-
return true
10-
}
11-
if matrix[i][j] > target {
12-
i--
13-
} else {
14-
j++
15-
}
16-
}
17-
return false
2+
if len(matrix) == 0 {
3+
return false
4+
}
5+
m, n := len(matrix), len(matrix[0])
6+
for i, j := 0, n-1; i < m && j >= 0; {
7+
if matrix[i][j] == target {
8+
return true
9+
}
10+
if matrix[i][j] < target {
11+
i++
12+
} else {
13+
j--
14+
}
15+
}
16+
return false
1817
}

lcof/面试题04. 二维数组中的查找/Solution.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
class Solution {
22
public boolean findNumberIn2DArray(int[][] matrix, int target) {
33
int m, n;
4-
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) return false;
5-
int i = 0, j = n - 1;
6-
while (i < m && j >= 0) {
7-
if (matrix[i][j] == target) return true;
8-
if (matrix[i][j] > target) --j;
9-
else ++i;
4+
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) {
5+
return false;
6+
}
7+
for (int i = 0, j = n - 1; i < m && j >= 0;) {
8+
if (matrix[i][j] == target) {
9+
return true;
10+
}
11+
if (matrix[i][j] < target) {
12+
++i;
13+
} else {
14+
--j;
15+
}
1016
}
1117
return false;
1218
}

lcof/面试题04. 二维数组中的查找/Solution.js

+14-15
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,20 @@
33
* @param {number} target
44
* @return {boolean}
55
*/
6-
var findNumberIn2DArray = function (matrix, target) {
6+
var findNumberIn2DArray = function (matrix, target) {
77
let m, n;
8-
if (
9-
matrix == null ||
10-
(m = matrix.length) == 0 ||
11-
matrix[0] == null ||
12-
(n = matrix[0].length) == 0
13-
)
14-
return false;
15-
let i = 0,
16-
j = n - 1;
17-
while (i < m && j >= 0) {
18-
if (matrix[i][j] == target) return true;
19-
if (matrix[i][j] > target) --j;
20-
else ++i;
8+
if (matrix == null || (m = matrix.length) == 0 || matrix[0] == null || (n = matrix[0].length) == 0) {
9+
return false;
10+
}
11+
for (let i = 0, j = n - 1; i < m && j >= 0;) {
12+
if (matrix[i][j] == target) {
13+
return true;
14+
}
15+
if (matrix[i][j] < target) {
16+
++i;
17+
} else {
18+
--j;
19+
}
2120
}
2221
return false;
23-
};
22+
};

solution/0200-0299/0280.Wiggle Sort/README.md

+49-1
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,63 @@
2525
<!-- 这里可写当前语言的特殊实现逻辑 -->
2626

2727
```python
28-
28+
class Solution:
29+
def wiggleSort(self, nums: List[int]) -> None:
30+
"""
31+
Do not return anything, modify nums in-place instead.
32+
"""
33+
for i in range(1, len(nums)):
34+
if (i % 2 == 1 and nums[i] < nums[i - 1]) or (i % 2 == 0 and nums[i] > nums[i - 1]):
35+
nums[i], nums[i - 1] = nums[i - 1], nums[i]
2936
```
3037

3138
### **Java**
3239

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

3542
```java
43+
class Solution {
44+
public void wiggleSort(int[] nums) {
45+
for (int i = 1; i < nums.length; ++i) {
46+
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
47+
swap(nums, i, i - 1);
48+
}
49+
}
50+
}
51+
52+
private void swap(int[] nums, int i, int j) {
53+
int t = nums[i];
54+
nums[i] = nums[j];
55+
nums[j] = t;
56+
}
57+
}
58+
```
59+
60+
### **C++**
61+
62+
```cpp
63+
class Solution {
64+
public:
65+
void wiggleSort(vector<int>& nums) {
66+
for (int i = 1; i < nums.size(); ++i) {
67+
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
68+
swap(nums[i], nums[i - 1]);
69+
}
70+
}
71+
}
72+
};
73+
```
74+
75+
### **Go**
3676
77+
```go
78+
func wiggleSort(nums []int) {
79+
for i := 1; i < len(nums); i++ {
80+
if (i%2 == 1 && nums[i] < nums[i-1]) || (i%2 == 0 && nums[i] > nums[i-1]) {
81+
nums[i], nums[i-1] = nums[i-1], nums[i]
82+
}
83+
}
84+
}
3785
```
3886

3987
### **...**

solution/0200-0299/0280.Wiggle Sort/README_EN.md

+49-1
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,61 @@
4343
### **Python3**
4444

4545
```python
46-
46+
class Solution:
47+
def wiggleSort(self, nums: List[int]) -> None:
48+
"""
49+
Do not return anything, modify nums in-place instead.
50+
"""
51+
for i in range(1, len(nums)):
52+
if (i % 2 == 1 and nums[i] < nums[i - 1]) or (i % 2 == 0 and nums[i] > nums[i - 1]):
53+
nums[i], nums[i - 1] = nums[i - 1], nums[i]
4754
```
4855

4956
### **Java**
5057

5158
```java
59+
class Solution {
60+
public void wiggleSort(int[] nums) {
61+
for (int i = 1; i < nums.length; ++i) {
62+
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
63+
swap(nums, i, i - 1);
64+
}
65+
}
66+
}
67+
68+
private void swap(int[] nums, int i, int j) {
69+
int t = nums[i];
70+
nums[i] = nums[j];
71+
nums[j] = t;
72+
}
73+
}
74+
```
75+
76+
### **C++**
77+
78+
```cpp
79+
class Solution {
80+
public:
81+
void wiggleSort(vector<int>& nums) {
82+
for (int i = 1; i < nums.size(); ++i) {
83+
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
84+
swap(nums[i], nums[i - 1]);
85+
}
86+
}
87+
}
88+
};
89+
```
90+
91+
### **Go**
5292
93+
```go
94+
func wiggleSort(nums []int) {
95+
for i := 1; i < len(nums); i++ {
96+
if (i%2 == 1 && nums[i] < nums[i-1]) || (i%2 == 0 && nums[i] > nums[i-1]) {
97+
nums[i], nums[i-1] = nums[i-1], nums[i]
98+
}
99+
}
100+
}
53101
```
54102

55103
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
func wiggleSort(nums []int) {
2+
for i := 1; i < len(nums); i++ {
3+
if (i%2 == 1 && nums[i] < nums[i-1]) || (i%2 == 0 && nums[i] > nums[i-1]) {
4+
nums[i], nums[i-1] = nums[i-1], nums[i]
5+
}
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public void wiggleSort(int[] nums) {
3+
for (int i = 1; i < nums.length; ++i) {
4+
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
5+
swap(nums, i, i - 1);
6+
}
7+
}
8+
}
9+
10+
private void swap(int[] nums, int i, int j) {
11+
int t = nums[i];
12+
nums[i] = nums[j];
13+
nums[j] = t;
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def wiggleSort(self, nums: List[int]) -> None:
3+
"""
4+
Do not return anything, modify nums in-place instead.
5+
"""
6+
for i in range(1, len(nums)):
7+
if (i % 2 == 1 and nums[i] < nums[i - 1]) or (i % 2 == 0 and nums[i] > nums[i - 1]):
8+
nums[i], nums[i - 1] = nums[i - 1], nums[i]

0 commit comments

Comments
 (0)