Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
Ainevsia committed Sep 5, 2023
1 parent 89b582b commit 68affdc
Show file tree
Hide file tree
Showing 9 changed files with 144 additions and 0 deletions.
8 changes: 8 additions & 0 deletions notes/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,12 @@
- [day 57](./day57.md)
- [647. 回文子串](./day56/lc647.md)
- [516.最长回文子序列](./day56/lc516.md)
- [day 58](./day58.md)
- [739. 每日温度](./day58/lc739.md)
- [496.下一个更大元素 I](./day58/lc496.md)
- [day 59](./day59.md)
- [503. 下一个更大元素II](./day58/lc503.md)
- [42. 接雨水](./day58/lc42.md)
- [day 60](./day60.md)
- [84. 柱状图中最大的矩形](./day58/lc84.md)
- [remains](./remains.md)
Empty file added notes/src/day58.md
Empty file.
27 changes: 27 additions & 0 deletions notes/src/day58/lc42.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 42. 接雨水

需要考虑前两个

```cpp
class Solution {
public:
int trap(vector<int>& v) {
int res = 0;
vector<int>s;
for(int i=0;i<v.size();i++){
while(!s.empty()&&v[s.back()]<=v[i]){
int idx = s.back();
s.pop_back();
if(!s.empty()){
int left = s.back();
int width = i - left - 1;
int height = min(v[left],v[i]) - v[idx];
res += width * height;
}
}
s.push_back(i);
}
return res;
}
};
```
28 changes: 28 additions & 0 deletions notes/src/day58/lc496.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 496. 下一个更大元素 I

从代码来看,v1的作用就是用来映射一次,增加了一层映射

```cpp
class Solution {
public:
vector<int> nextGreaterElement(vector<int>&v1,vector<int>&v2) {
vector<int>res(v1.size(),-1);
unordered_map<int, int> m; // key:下标元素,value:下标
for (int i = 0; i < v1.size(); i++) {
m[v1[i]] = i;
}
vector<int>s;
for(int i=0;i<v2.size();i++){
while(!s.empty()&&v2[s.back()]<v2[i]){
int idx = s.back();
s.pop_back();
if (m.find(v2[idx])!=m.end()){
res[m[v2[idx]]]=v2[i];
}
}
s.push_back(i);
}
return res;
}
};
```
21 changes: 21 additions & 0 deletions notes/src/day58/lc503.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 503.下一个更大元素II

```cpp
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& v) {
vector<int>res(v.size(),-1);
vector<int>s;
int n = v.size();
for(int i=0;i<n*2;i++){
while(!s.empty()&&v[s.back()]<v[i%n]){
int idx = s.back();
s.pop_back();
res[idx]=v[i%n];
}
s.push_back(i%n);
}
return res;
}
};
```
24 changes: 24 additions & 0 deletions notes/src/day58/lc739.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 739. 每日温度

```cpp
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& v) {
vector<int>res(v.size(),0);
// 1
// 1 1
// 1 1 1
vector<int>s;
for(int i=0;i<v.size();i++){
while(!s.empty()&&v[s.back()]<v[i])
{
int idx=s.back();
s.pop_back();
res[idx]=i-idx;
}
s.push_back(i);
}
return res;
}
};
```
36 changes: 36 additions & 0 deletions notes/src/day58/lc84.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 84.柱状图中最大的矩形

```cpp
class Solution {
public:
int largestRectangleArea(vector<int>& v) {
int res = 0;
vector<int>rightfirstsmallerthanmine(v.size(),v.size());
vector<int>leftffirstsmallerthanmine(v.size(),-1);
vector<int>s;
for(int i=0;i<v.size();i++){
while(!s.empty()&&v[s.back()]>v[i]){
int idx = s.back();
s.pop_back();
rightfirstsmallerthanmine[idx]=i;
}
s.push_back(i);
}
s.clear();
for(int i=v.size()-1;i>=0;i--){
while(!s.empty()&&v[s.back()]>v[i]){
int idx = s.back();
s.pop_back();
leftffirstsmallerthanmine[idx]=i;
}
s.push_back(i);
}
for(int i=0;i<v.size();i++){
int width = rightfirstsmallerthanmine[i] - leftffirstsmallerthanmine[i]-1;
int height = v[i];
res = max(res, width*height);
}
return res;
}
};
```
Empty file added notes/src/day59.md
Empty file.
Empty file added notes/src/day60.md
Empty file.

0 comments on commit 68affdc

Please sign in to comment.