class Solution {
public int maxSales(int[] sales) {
int n = sales.length;
int[] dp = new int[n + 1];
int max = Integer.MIN_VALUE;
for (int i = 1; i <= n; i++) {
dp[i] = Math.max(dp[i - 1] + sales[i - 1], sales[i - 1]);
max = Math.max(max, dp[i]);
}
return max;
}
}
class Solution {
public int maxSales(int[] sales) {
int[] dp = new int[sales.length]; // 到某天为止的最大连续销售总和
dp[0]=sales[0];
int max = sales[0];
for(int i=1;i<sales.length;i++){
dp[i]=Math.max(dp[i-1]+sales[i],sales[i]);
max=Math.max(dp[i],max);
}
return max;
}
}
class Solution {
public:
int maxSales(vector& sales) {
//dp[i]为包含sales[i]的最大利润
int n = sales.size();
int res = sales[0];
for(int i=1;i<n;i++){
if(sales[i-1]>0) sales[i] += sales[i-1];
if(sales[i] > res) res = sales[i];
帅地优化之后的版本:
class Solution {
public int maxSales(int[] sales) {
//dp代表到第i天(包括i)为止最大的连续天数销售额
int dp = sales[0];
int max = sales[0];//表示最后返回的最大的连续天数销售额
for(int i = 1;i<sales.length;i++){
dp = Math.max(sales[i],sales[i]+dp);
max = Math.max(max,dp);
}
return max;
}
}
自己写的:
class Solution {
public int maxSales(int[] sales) {
//定义:dp[i]表示截止到第i天之前,第i天的最大销售额
int[] dp = new int[sales.length];
dp[0] = sales[0];
int max = sales[0];
for(int i = 1;i<sales.length;i++){
if(dp[i-1]<0){
dp[i] = sales[i];
}else{
dp[i] = dp[i-1]+sales[i];
}
if(max<dp[i]){
max = dp[i];
}
}
return max;
}
}
//动态规划的方法,连续盈利的最大天数和利润值自然最大,dp[i] = dp[i-1] + sales[i](dp[i-1] > 0) sales[i](dp[i-1]<0)
class Solution {
public int maxSales(int[] sales) {
int res = sales[0];
for (int i = 1; i < sales.length; i++) {
sales[i] += Math.max(sales[i-1],0);
res = Math.max(res,sales[i]);
}
return res;
}
}
class Solution {
public:
int maxSales(vector& sales) {
int n = sales.size();
int res = sales[0];
int dp = sales[0];
for(int i = 1; i < n; i ++) {
dp = max(dp + sales[i], sales[i]);
res = max(res, dp);
}
return res;
}
};
时间复杂度O(n),空间复杂度o(1)
“`c++
class Solution {
public:
int maxSales(vector& sales) {
int maxi = sales[0];
int cur = maxi;
for (int i=1; i maxi ? cur : maxi;
}
return maxi;
}
};
“`
class Solution {
public int maxSales(int[] sales) {
int max[] = new int[sales.length];
int ans = -101;
max[0] = sales[0];
for(int i = 1; i < sales.length; i++){
max[i] = Math.max(sales[i],max[i-1] + sales[i]);
}
for(int i = 0; i < sales.length;i++)
ans = Math.max(ans,max[i]);
return ans;
}
“`C++
class Solution {
public:
int maxSales(vector& sales) {
if(sales.empty() == true)
{
return {};
}
int days = sales.size();
int max1 = sales[0];
int dp = sales[0];
//边缘条件
共以下 14 个回答
class Solution {
public int maxSales(int[] sales) {
int n = sales.length;
}
时间:O(n)
空间:O(n)
动态规划解决,时间复杂度O(N),空间复杂度O(N)
class Solution {& sales) {
public:
int maxSales(vector
int pre = 0, maxAns = sales[0];
for (const auto &x: sales) {
pre = max(pre + x, x);
maxAns = max(maxAns, pre);
}
return maxAns;
}
};
打卡
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {& sales) {
public:
int maxSales(vector
//dp[i]为包含sales[i]的最大利润
int n = sales.size();
int res = sales[0];
for(int i=1;i<n;i++){
if(sales[i-1]>0) sales[i] += sales[i-1];
if(sales[i] > res) res = sales[i];
};
时间复杂度:O(n)
空间复杂度:O(n)
打卡
时间复杂度$O(n)$,空间复杂度$O(1)$
class Solution {& sales) {
public:
int maxSales(vector
int n = sales.size();
int res = sales[0];
int dp = sales[0];
for(int i = 1; i < n; i ++) {
dp = max(dp + sales[i], sales[i]);
res = max(res, dp);
}
return res;
}
};
时间复杂度O(n),空间复杂度o(1)
时间复杂度:O(n)
“`c++& sales) { maxi ? cur : maxi;
class Solution {
public:
int maxSales(vector
int maxi = sales[0];
int cur = maxi;
for (int i=1; i
}
return maxi;
}
};
“`
class Solution {
public int maxSales(int[] sales) {
}
//时空复杂度均为ON
时间复杂度O(N),空间复杂度O(1)
“`C++& sales) {
class Solution {
public:
int maxSales(vector
if(sales.empty() == true)
{
return {};
}
int days = sales.size();
int max1 = sales[0];
int dp = sales[0];
//边缘条件
};
“`