1. 程式人生 > 其它 >leetcode 217. 存在重複元素 (python|演算法)

leetcode 217. 存在重複元素 (python|演算法)

技術標籤:筆記

給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時,定義子段和為0。
要求演算法的時間複雜度為O(n)。

輸入格式:

輸入有兩行:

第一行 是n值(1<=n<=10000);

第二行是n個整數。

輸出格式

輸出最大子段和。

輸入樣例:

在這裡給出一組輸入。例如:

6
-2 11 -4 13 -5 -2
輸出樣例:

在這裡給出相應的輸出。例如:

20

程式碼


#include <iostream>
using namespace std;
int
mis(int n,int a[],int b[],int max) { for(int i=0;i<n;i++) { if(i==0) { b[i]=a[i]; max=b[i]; } else { if(b[i-1]<=0) b[i]=a[i]; else b[i]=b[i-1]+a[i]; if(b[i]
>max) max=b[i]; } } return max; } int main() { int n; cin>>n; int a[10000],sum; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) sum=sum+a[i]; if(sum<0) cout<<0; else { int
b[10000],max=0; max=mis(n,a,b,max); cout<<max<<endl; } return 0; }