Skip to content

Commit 150cd4a

Browse files
Dhoni77yanglbme
andauthored
feat: add cpp solution to lc problem: No.1337 (doocs#776)
No.1337.The K Weakest Rows in a Matrix Co-authored-by: Yang Libin <contact@yanglibin.info>
1 parent f6105ca commit 150cd4a

File tree

3 files changed

+103
-6
lines changed

3 files changed

+103
-6
lines changed

solution/1300-1399/1337.The K Weakest Rows in a Matrix/README.md

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,42 @@ function kWeakestRows(mat: number[][], k: number): number[] {
156156
}
157157
```
158158

159-
### **...**
160-
161-
```
159+
### **C++**
162160

161+
```cpp
162+
class Solution {
163+
public:
164+
int search(vector<int>& m)
165+
{
166+
int l = 0;
167+
int h = m.size() - 1;
168+
while (l <= h)
169+
{
170+
int mid = l + (h - l) / 2;
171+
if (m[mid] == 0)
172+
h = mid - 1;
173+
else
174+
l = mid + 1;
175+
}
176+
return l;
177+
}
178+
179+
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
180+
vector<pair<int, int>> p;
181+
vector<int> res;
182+
for (int i = 0; i < mat.size(); i++)
183+
{
184+
int count = search(mat[i]);
185+
p.push_back({count, i});
186+
}
187+
sort(p.begin(), p.end());
188+
for (int i = 0; i < k; i++)
189+
{
190+
res.push_back(p[i].second);
191+
}
192+
return res;
193+
}
194+
};
163195
```
164196
165197
<!-- tabs:end -->

solution/1300-1399/1337.The K Weakest Rows in a Matrix/README_EN.md

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,42 @@ function kWeakestRows(mat: number[][], k: number): number[] {
149149
}
150150
```
151151

152-
### **...**
153-
154-
```
152+
### **C++**
155153

154+
```cpp
155+
class Solution {
156+
public:
157+
int search(vector<int>& m)
158+
{
159+
int l = 0;
160+
int h = m.size() - 1;
161+
while (l <= h)
162+
{
163+
int mid = l + (h - l) / 2;
164+
if (m[mid] == 0)
165+
h = mid - 1;
166+
else
167+
l = mid + 1;
168+
}
169+
return l;
170+
}
171+
172+
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
173+
vector<pair<int, int>> p;
174+
vector<int> res;
175+
for (int i = 0; i < mat.size(); i++)
176+
{
177+
int count = search(mat[i]);
178+
p.push_back({count, i});
179+
}
180+
sort(p.begin(), p.end());
181+
for (int i = 0; i < k; i++)
182+
{
183+
res.push_back(p[i].second);
184+
}
185+
return res;
186+
}
187+
};
156188
```
157189
158190
<!-- tabs:end -->
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
public:
3+
int search(vector<int>& m)
4+
{
5+
int l = 0;
6+
int h = m.size() - 1;
7+
while (l <= h)
8+
{
9+
int mid = l + (h - l) / 2;
10+
if (m[mid] == 0)
11+
h = mid - 1;
12+
else
13+
l = mid + 1;
14+
}
15+
return l;
16+
}
17+
18+
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
19+
vector<pair<int, int>> p;
20+
vector<int> res;
21+
for (int i = 0; i < mat.size(); i++)
22+
{
23+
int count = search(mat[i]);
24+
p.push_back({count, i});
25+
}
26+
sort(p.begin(), p.end());
27+
for (int i = 0; i < k; i++)
28+
{
29+
res.push_back(p[i].second);
30+
}
31+
return res;
32+
}
33+
};

0 commit comments

Comments
 (0)