Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4adaba2

Browse files
committed
feat: add solutions to lcci problems: No.10.05,10.09
1 parent 4857958 commit 4adaba2

File tree

12 files changed

+338
-21
lines changed

12 files changed

+338
-21
lines changed

‎lcci/10.05.Sparse Array Search/README.md‎

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,84 @@
3737
<!-- 这里可写当前语言的特殊实现逻辑 -->
3838

3939
```python
40-
40+
class Solution:
41+
def findString(self, words: List[str], s: str) -> int:
42+
left, right = 0, len(words) - 1
43+
while left < right:
44+
mid = (left + right) >> 1
45+
while left < mid and words[mid] == '':
46+
mid -= 1
47+
if s <= words[mid]:
48+
right = mid
49+
else:
50+
left = mid + 1
51+
return -1 if words[left] != s else left
4152
```
4253

4354
### **Java**
4455

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

4758
```java
59+
class Solution {
60+
public int findString(String[] words, String s) {
61+
int left = 0, right = words.length - 1;
62+
while (left < right) {
63+
int mid = (left + right) >> 1;
64+
while (left < mid && "".equals(words[mid])) {
65+
--mid;
66+
}
67+
if (s.compareTo(words[mid]) <= 0) {
68+
right = mid;
69+
} else {
70+
left = mid + 1;
71+
}
72+
}
73+
return s.equals(words[left]) ? left : -1;
74+
}
75+
}
76+
```
77+
78+
### **C++**
79+
80+
```cpp
81+
class Solution {
82+
public:
83+
int findString(vector<string>& words, string s) {
84+
int left = 0, right = words.size() - 1;
85+
while (left < right)
86+
{
87+
int mid = left + right >> 1;
88+
while (left < mid && words[mid] == "") --mid;
89+
if (s <= words[mid]) right = mid;
90+
else left = mid + 1;
91+
}
92+
return words[left] == s ? left : -1;
93+
}
94+
};
95+
```
4896
97+
### **Go**
98+
99+
```go
100+
func findString(words []string, s string) int {
101+
left, right := 0, len(words)-1
102+
for left < right {
103+
mid := (left + right) >> 1
104+
for left < mid && words[mid] == "" {
105+
mid--
106+
}
107+
if s <= words[mid] {
108+
right = mid
109+
} else {
110+
left = mid + 1
111+
}
112+
}
113+
if words[left] == s {
114+
return left
115+
}
116+
return -1
117+
}
49118
```
50119

51120
### **...**

‎lcci/10.05.Sparse Array Search/README_EN.md‎

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,82 @@
3939
### **Python3**
4040

4141
```python
42-
42+
class Solution:
43+
def findString(self, words: List[str], s: str) -> int:
44+
left, right = 0, len(words) - 1
45+
while left < right:
46+
mid = (left + right) >> 1
47+
while left < mid and words[mid] == '':
48+
mid -= 1
49+
if s <= words[mid]:
50+
right = mid
51+
else:
52+
left = mid + 1
53+
return -1 if words[left] != s else left
4354
```
4455

4556
### **Java**
4657

4758
```java
59+
class Solution {
60+
public int findString(String[] words, String s) {
61+
int left = 0, right = words.length - 1;
62+
while (left < right) {
63+
int mid = (left + right) >> 1;
64+
while (left < mid && "".equals(words[mid])) {
65+
--mid;
66+
}
67+
if (s.compareTo(words[mid]) <= 0) {
68+
right = mid;
69+
} else {
70+
left = mid + 1;
71+
}
72+
}
73+
return s.equals(words[left]) ? left : -1;
74+
}
75+
}
76+
```
77+
78+
### **C++**
79+
80+
```cpp
81+
class Solution {
82+
public:
83+
int findString(vector<string>& words, string s) {
84+
int left = 0, right = words.size() - 1;
85+
while (left < right)
86+
{
87+
int mid = left + right >> 1;
88+
while (left < mid && words[mid] == "") --mid;
89+
if (s <= words[mid]) right = mid;
90+
else left = mid + 1;
91+
}
92+
return words[left] == s ? left : -1;
93+
}
94+
};
95+
```
4896
97+
### **Go**
98+
99+
```go
100+
func findString(words []string, s string) int {
101+
left, right := 0, len(words)-1
102+
for left < right {
103+
mid := (left + right) >> 1
104+
for left < mid && words[mid] == "" {
105+
mid--
106+
}
107+
if s <= words[mid] {
108+
right = mid
109+
} else {
110+
left = mid + 1
111+
}
112+
}
113+
if words[left] == s {
114+
return left
115+
}
116+
return -1
117+
}
49118
```
50119

51120
### **...**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
int findString(vector<string>& words, string s) {
4+
int left = 0, right = words.size() - 1;
5+
while (left < right)
6+
{
7+
int mid = left + right >> 1;
8+
while (left < mid && words[mid] == "") --mid;
9+
if (s <= words[mid]) right = mid;
10+
else left = mid + 1;
11+
}
12+
return words[left] == s ? left : -1;
13+
}
14+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
func findString(words []string, s string) int {
2+
left, right := 0, len(words)-1
3+
for left < right {
4+
mid := (left + right) >> 1
5+
for left < mid && words[mid] == "" {
6+
mid--
7+
}
8+
if s <= words[mid] {
9+
right = mid
10+
} else {
11+
left = mid + 1
12+
}
13+
}
14+
if words[left] == s {
15+
return left
16+
}
17+
return -1
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public int findString(String[] words, String s) {
3+
int left = 0, right = words.length - 1;
4+
while (left < right) {
5+
int mid = (left + right) >> 1;
6+
while (left < mid && "".equals(words[mid])) {
7+
--mid;
8+
}
9+
if (s.compareTo(words[mid]) <= 0) {
10+
right = mid;
11+
} else {
12+
left = mid + 1;
13+
}
14+
}
15+
return s.equals(words[left]) ? left : -1;
16+
}
17+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def findString(self, words: List[str], s: str) -> int:
3+
left, right = 0, len(words) - 1
4+
while left < right:
5+
mid = (left + right) >> 1
6+
while left < mid and words[mid] == '':
7+
mid -= 1
8+
if s <= words[mid]:
9+
right = mid
10+
else:
11+
left = mid + 1
12+
return -1 if words[left] != s else left

‎lcci/10.09.Sorted Matrix Search/README.md‎

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ class Solution:
4141
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
4242
if not matrix or not matrix[0]:
4343
return False
44-
rows, cols = len(matrix), len(matrix[0])
45-
i, j = rows - 1, 0
46-
while i >= 0 and j < cols:
44+
m, n = len(matrix), len(matrix[0])
45+
i, j = m - 1, 0
46+
while i >= 0 and j < n:
4747
if matrix[i][j] == target:
4848
return True
4949
if matrix[i][j] > target:
@@ -64,9 +64,9 @@ class Solution {
6464
if (matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0) {
6565
return false;
6666
}
67-
int rows = matrix.length, cols = matrix[0].length;
68-
int i = rows - 1, j = 0;
69-
while (i >= 0 && j < cols) {
67+
int m = matrix.length, n = matrix[0].length;
68+
int i = m - 1, j = 0;
69+
while (i >= 0 && j < n) {
7070
if (matrix[i][j] == target) {
7171
return true;
7272
}
@@ -81,6 +81,49 @@ class Solution {
8181
}
8282
```
8383

84+
### **C++**
85+
86+
```cpp
87+
class Solution {
88+
public:
89+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
90+
if (matrix.size() == 0 || matrix[0].size() == 0) return false;
91+
int m = matrix.size(), n = matrix[0].size();
92+
int i = m - 1, j = 0;
93+
while (i >= 0 && j < n)
94+
{
95+
if (matrix[i][j] == target) return true;
96+
if (matrix[i][j] > target) --i;
97+
else ++j;
98+
}
99+
return false;
100+
}
101+
};
102+
```
103+
104+
### **Go**
105+
106+
```go
107+
func searchMatrix(matrix [][]int, target int) bool {
108+
if len(matrix) == 0 || len(matrix[0]) == 0 {
109+
return false
110+
}
111+
m, n := len(matrix), len(matrix[0])
112+
i, j := m-1, 0
113+
for i >= 0 && j < n {
114+
if matrix[i][j] == target {
115+
return true
116+
}
117+
if matrix[i][j] > target {
118+
i--
119+
} else {
120+
j++
121+
}
122+
}
123+
return false
124+
}
125+
```
126+
84127
### **...**
85128

86129
```

‎lcci/10.09.Sorted Matrix Search/README_EN.md‎

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,16 @@ class Solution:
4343
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
4444
if not matrix or not matrix[0]:
4545
return False
46-
rows, cols = len(matrix), len(matrix[0])
47-
i, j = rows - 1, 0
48-
while i >= 0 and j < cols:
46+
m, n = len(matrix), len(matrix[0])
47+
i, j = m - 1, 0
48+
while i >= 0 and j < n:
4949
if matrix[i][j] == target:
5050
return True
5151
if matrix[i][j] > target:
5252
i -= 1
5353
else:
5454
j += 1
5555
return False
56-
5756
```
5857

5958
### **Java**
@@ -64,9 +63,9 @@ class Solution {
6463
if (matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0) {
6564
return false;
6665
}
67-
int rows = matrix.length, cols = matrix[0].length;
68-
int i = rows - 1, j = 0;
69-
while (i >= 0 && j < cols) {
66+
int m = matrix.length, n = matrix[0].length;
67+
int i = m - 1, j = 0;
68+
while (i >= 0 && j < n) {
7069
if (matrix[i][j] == target) {
7170
return true;
7271
}
@@ -81,6 +80,49 @@ class Solution {
8180
}
8281
```
8382

83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
89+
if (matrix.size() == 0 || matrix[0].size() == 0) return false;
90+
int m = matrix.size(), n = matrix[0].size();
91+
int i = m - 1, j = 0;
92+
while (i >= 0 && j < n)
93+
{
94+
if (matrix[i][j] == target) return true;
95+
if (matrix[i][j] > target) --i;
96+
else ++j;
97+
}
98+
return false;
99+
}
100+
};
101+
```
102+
103+
### **Go**
104+
105+
```go
106+
func searchMatrix(matrix [][]int, target int) bool {
107+
if len(matrix) == 0 || len(matrix[0]) == 0 {
108+
return false
109+
}
110+
m, n := len(matrix), len(matrix[0])
111+
i, j := m-1, 0
112+
for i >= 0 && j < n {
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
123+
}
124+
```
125+
84126
### **...**
85127

86128
```

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /