Skip to content

Commit 68affdc

Browse files
committed
1
1 parent 89b582b commit 68affdc

File tree

9 files changed

+144
-0
lines changed

9 files changed

+144
-0
lines changed

notes/src/SUMMARY.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,12 @@
182182
- [day 57](./day57.md)
183183
- [647. 回文子串](./day56/lc647.md)
184184
- [516.最长回文子序列](./day56/lc516.md)
185+
- [day 58](./day58.md)
186+
- [739. 每日温度](./day58/lc739.md)
187+
- [496.下一个更大元素 I](./day58/lc496.md)
188+
- [day 59](./day59.md)
189+
- [503. 下一个更大元素II](./day58/lc503.md)
190+
- [42. 接雨水](./day58/lc42.md)
191+
- [day 60](./day60.md)
192+
- [84. 柱状图中最大的矩形](./day58/lc84.md)
185193
- [remains](./remains.md)

notes/src/day58.md

Whitespace-only changes.

notes/src/day58/lc42.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 42. 接雨水
2+
3+
需要考虑前两个
4+
5+
```cpp
6+
class Solution {
7+
public:
8+
int trap(vector<int>& v) {
9+
int res = 0;
10+
vector<int>s;
11+
for(int i=0;i<v.size();i++){
12+
while(!s.empty()&&v[s.back()]<=v[i]){
13+
int idx = s.back();
14+
s.pop_back();
15+
if(!s.empty()){
16+
int left = s.back();
17+
int width = i - left - 1;
18+
int height = min(v[left],v[i]) - v[idx];
19+
res += width * height;
20+
}
21+
}
22+
s.push_back(i);
23+
}
24+
return res;
25+
}
26+
};
27+
```

notes/src/day58/lc496.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 496. 下一个更大元素 I
2+
3+
从代码来看,v1的作用就是用来映射一次,增加了一层映射
4+
5+
```cpp
6+
class Solution {
7+
public:
8+
vector<int> nextGreaterElement(vector<int>&v1,vector<int>&v2) {
9+
vector<int>res(v1.size(),-1);
10+
unordered_map<int, int> m; // key:下标元素,value:下标
11+
for (int i = 0; i < v1.size(); i++) {
12+
m[v1[i]] = i;
13+
}
14+
vector<int>s;
15+
for(int i=0;i<v2.size();i++){
16+
while(!s.empty()&&v2[s.back()]<v2[i]){
17+
int idx = s.back();
18+
s.pop_back();
19+
if (m.find(v2[idx])!=m.end()){
20+
res[m[v2[idx]]]=v2[i];
21+
}
22+
}
23+
s.push_back(i);
24+
}
25+
return res;
26+
}
27+
};
28+
```

notes/src/day58/lc503.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# 503.下一个更大元素II
2+
3+
```cpp
4+
class Solution {
5+
public:
6+
vector<int> nextGreaterElements(vector<int>& v) {
7+
vector<int>res(v.size(),-1);
8+
vector<int>s;
9+
int n = v.size();
10+
for(int i=0;i<n*2;i++){
11+
while(!s.empty()&&v[s.back()]<v[i%n]){
12+
int idx = s.back();
13+
s.pop_back();
14+
res[idx]=v[i%n];
15+
}
16+
s.push_back(i%n);
17+
}
18+
return res;
19+
}
20+
};
21+
```

notes/src/day58/lc739.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# 739. 每日温度
2+
3+
```cpp
4+
class Solution {
5+
public:
6+
vector<int> dailyTemperatures(vector<int>& v) {
7+
vector<int>res(v.size(),0);
8+
// 1
9+
// 1 1
10+
// 1 1 1
11+
vector<int>s;
12+
for(int i=0;i<v.size();i++){
13+
while(!s.empty()&&v[s.back()]<v[i])
14+
{
15+
int idx=s.back();
16+
s.pop_back();
17+
res[idx]=i-idx;
18+
}
19+
s.push_back(i);
20+
}
21+
return res;
22+
}
23+
};
24+
```

notes/src/day58/lc84.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# 84.柱状图中最大的矩形
2+
3+
```cpp
4+
class Solution {
5+
public:
6+
int largestRectangleArea(vector<int>& v) {
7+
int res = 0;
8+
vector<int>rightfirstsmallerthanmine(v.size(),v.size());
9+
vector<int>leftffirstsmallerthanmine(v.size(),-1);
10+
vector<int>s;
11+
for(int i=0;i<v.size();i++){
12+
while(!s.empty()&&v[s.back()]>v[i]){
13+
int idx = s.back();
14+
s.pop_back();
15+
rightfirstsmallerthanmine[idx]=i;
16+
}
17+
s.push_back(i);
18+
}
19+
s.clear();
20+
for(int i=v.size()-1;i>=0;i--){
21+
while(!s.empty()&&v[s.back()]>v[i]){
22+
int idx = s.back();
23+
s.pop_back();
24+
leftffirstsmallerthanmine[idx]=i;
25+
}
26+
s.push_back(i);
27+
}
28+
for(int i=0;i<v.size();i++){
29+
int width = rightfirstsmallerthanmine[i] - leftffirstsmallerthanmine[i]-1;
30+
int height = v[i];
31+
res = max(res, width*height);
32+
}
33+
return res;
34+
}
35+
};
36+
```

notes/src/day59.md

Whitespace-only changes.

notes/src/day60.md

Whitespace-only changes.

0 commit comments

Comments
 (0)