2021/8/21
两个leetcode困难
[//]: # (支持粘贴图片啦🎉🎉🎉)
[//]: # (保存的笔记可以在小程序中查看)
```
class Solution {
public:
int shortestSubarray(vector<int>& nums, int k) {
int ans = 10001010;
int sum = 0,P = 0;
int pre[500010];pre[0] = nums[0];
int dp[50010],top = 0;
for(int i = 1;i < nums.size(); ++ i){
pre[i] = pre[i - 1] + nums[i];
}
for(int i = 0; i < nums.size(); ++ i){
if(pre[i] >= k){
ans = min(ans,i + 1);
}
if(P == top){
dp[top ++] = i; continue;
}
while(P < top && pre[i] <= pre[dp[top - 1]]){
-- top;
}
while(P < top && pre[i] - pre[dp[P]] >= k){
ans = min(ans,i - dp[P]);
++ P;
}
dp[top ++] = i;
}
if( ans == 10001010) return -1;
return ans;
}
};
[//]: # (支持粘贴图片啦🎉🎉🎉)
[//]: # (保存的笔记可以在小程序中查看)
```
class Solution {
public:
int pre[220][220];
vector<int> getMaxMatrix(vector<vector<int>>& matrix) {
int maxx = -101000000;
int x1,y1,x2,y2;
for(int i = 0; i < matrix.size();++ i){
for(int j = 0; j < matrix[0].size(); j ++){
if(i == 0) pre[i][j] = matrix[i][j];
else pre[i][j] = pre[i - 1][j] + matrix[i][j];
if(matrix[i][j] > maxx){
maxx = matrix[i][j]; x1 = x2 = i; y1 = y2 = j;
}
}
}
for(int i = 0; i < matrix.size(); i ++){
for(int j = i; j < matrix.size(); j ++){
int ans = 0;
int P = 0;
for(int k = 0; k < matrix[i].size(); ++ k){
if(i == 0){
if(ans + pre[j][k] > 0){
ans += pre[j][k];
if(ans > maxx){
x1 = i; x2 = j; y2 = k;y1 = P;
maxx = ans;
}
continue;
} else {
ans = 0;
P = k + 1;
}
continue;
}
int mul = pre[j][k] - pre[i - 1][k];
if(ans + mul > 0){
ans += mul;
if(ans > maxx){
x1 = i; x2 = j; y2 = k;y1 = P;
maxx = ans;
}
continue;
} else {
ans = 0;
P = k + 1;
}
}
}
}
vector<int> T;
T.push_back(x1);T.push_back(y1);
T.push_back(x2);T.push_back(y2);
return T;
}
};
```
```
一场笔试
一场面试
mysql45讲又看了五讲;同时学着如何设计了一个表。
复习整理了一些其他的问题
看了图解网络

浙公网安备 33010602011771号