当前位置:网站首页>Leetcode notes - dynamic planning -day6
Leetcode notes - dynamic planning -day6
2022-07-06 15:16:00 【LL. LEBRON】
List of articles
LeetCode Brush notes - Dynamic programming -day6
152. Product maximum subarray
1. subject
Original link :152. Product maximum subarray

2. Their thinking
Algorithm : Dynamic programming + Rolling array optimization
- f[i] All from 0 To i And choose a[i] The maximum product obtained
- g[i] All from 0 To i And choose a[i] Minimum product obtained
There are several situations :
- When a[i] >= 0 when ,f[i] = max(a[i], f[i - 1] * a[i])
- When a[i] < 0 when ,f[i] = max(a[i], g[i - 1] * a[i])
- When a[i] >= 0 when ,g[i] = min(a[i], g[i - 1] * a[i])
- When a[i] < 0 when ,g[i] = min(a[i], f[i - 1] * a[i])
Can be combined into :
- When
a[i] >= 0whenf[i] = max(a[i], max(f[i-1] * a[i],g[i-1]*a[i])) - When
a[i]<0whenf[i] = max(a[i], max(g[i-1] * a[i],f[i-1]*a[i])
You can use scrolling arrays to optimize space . See the code for details .
3. Code
class Solution {
public:
int maxProduct(vector<int>& a) {
int f=a[0],g=a[0];
int res=a[0];
for(int i=1;i<a.size();i++){
int t=a[i],fa=f*t,ga=g*t;
f=max(t,max(fa,ga));
g=min(t,min(fa,ga));
res=max(res,f);
}
return res;
}
};
1567. The longest subarray length whose product is a positive number
1. subject
Original link :1567. The longest subarray length whose product is a positive number

2. Their thinking
Algorithm : Dynamic programming
We can use two arrays f[i] and g[i]:
f[i]Denotes the following i The length of the longest subarray with a positive product at the endg[i]Denotes the following i The length of the longest subarray with a negative product at the end
Here we can get the recurrence formula :
- If the current number is greater than 0, namely
nums[i]>0, Multiply the previous product by the current number , The positive and negative will not change , therefore :f[i]=f[i-1]+1- If
g[i-1]It's not equal to 0 Words , One more , If g[i-1] As such 0, A positive number here will not change
- If the current number is less than 0, namely
nums[i]<0, Multiplying the previous product by the current number will change the positive and negative of the product , therefore :- Now
g[i]It should be equal tof[i-1]+1, becausef[i-1]The product of contained numbers is a positive number , Multiplying by the current number is just a negative number . f[i]You need to considerg[i-1]situation , Ifg[i-1]by 0, heref[i]Also for 0, otherwisef[i]=g[i-1]+1, A negative number multiplied by a negative number is a positive number
- Now
- If the current number is 0, namely
nums[i]==0, takef[i],g[i]The assignment is 0 - Maintain the maximum value for each iteration :
res=max(res,f[i]);
3. Code
class Solution {
public:
int getMaxLen(vector<int>& nums) {
int f=0,g=0;
if(nums[0]>0) f=1;
else if(nums[0]<0) g=1;
int res=f;
for(int i=1;i<nums.size();i++){
if(nums[i]>0){
f++;
g=(g==0)?0:g+1;
}else if(nums[i]<0){
int t=f;
f=(g==0)?0:g+1;
g=t+1;
}else{
f=0,g=0;
}
res=max(res,f);
}
return res;
}
};

边栏推荐
- Maximum nesting depth of parentheses in leetcode simple questions
- MySQL数据库(一)
- ucore lab7 同步互斥 实验报告
- Which version of MySQL does php7 work best with?
- Database monitoring SQL execution
- [HCIA continuous update] advanced features of routing
- Stc-b learning board buzzer plays music
- Global and Chinese markets of electronic grade hexafluorobutadiene (C4F6) 2022-2028: Research Report on technology, participants, trends, market size and share
- ucore lab8 文件系统 实验报告
- Common Oracle commands
猜你喜欢

MySQL数据库(一)

想跳槽?面试软件测试需要掌握的7个技能你知道吗

Leetcode simple question: check whether two strings are almost equal
![Cadence physical library lef file syntax learning [continuous update]](/img/0b/75a4ac2649508857468d9b37703a27.jpg)
Cadence physical library lef file syntax learning [continuous update]

Express

Do you know the advantages and disadvantages of several open source automated testing frameworks?

Install and run tensorflow object detection API video object recognition system of Google open source
转行软件测试必需要知道的知识

Don't you even look at such a detailed and comprehensive written software test question?

Nest and merge new videos, and preset new video titles
随机推荐
Logstack introduction and deployment -- elasticstack (elk) work notes 019
The salary of testers is polarized. How to become an automated test with a monthly salary of 20K?
How to transform functional testing into automated testing?
Build your own application based on Google's open source tensorflow object detection API video object recognition system (I)
Servlet
ucore lab6 调度器 实验报告
Cadence physical library lef file syntax learning [continuous update]
想跳槽?面试软件测试需要掌握的7个技能你知道吗
pytest
Fundamentals of digital circuits (III) encoder and decoder
Currently, mysql5.6 is used. Which version would you like to upgrade to?
Sorting odd and even subscripts respectively for leetcode simple problem
Common Oracle commands
Do you know the performance testing terms to be asked in the software testing interview?
Face and eye recognition based on OpenCV's own model
Mysql database (III) advanced data query statement
Mysql database (V) views, stored procedures and triggers
Iterators and generators
ucore lab8 文件系统 实验报告
接口测试面试题及参考答案,轻松拿捏面试官