1490 連續子串和 (貪心)

2022-05-03 13:42:19 字數 954 閱讀 5858

time limit: 1 sec  memory limit: 128 mb

submit: 209  solved: 36

小y前段時間剛剛做完連續子串和問題,相信大家對連續子串和也都不陌生,現在小y又碰到了乙個新的難題,給定n個整數,求至少k個數連續的最大和為多少?

若干組測試資料,每組資料第一行給出兩個數n(1<=n<=10^6),k(1<=k<=n)。接下來一行n個數字,分別是a1,a2...an,對於每個數滿足-1000<=ai<=1000。

輸出長度大於等於k的連續整數和值中最大的乙個。

5 3-2 3 6 0 1

10分析:

典型貪心,要求最少k個連續整數和的最大值,從第k個數開始列舉每乙個數字作為結束點。保留前i位數的字首和為sum[i],對於以i為結束的序列,其值為

sum[i]-sum[i-k], sum[i]-sum[i-k-1], sum[i]-sum[i-k-2], sum[i]-sum[1], sum[0]之一,那麼我們只需要對每乙個i保留sum[0]到sum[i-k]的最小值就可以了

1 #include2 #include3 #include4 #include5

using

namespace

std;67

const

int maxn = 1e6+10;8

const

int inf = 0x3f3f3f3f;9

10int

n,k;

11int

num[maxn];

1213

intsolve()

21return

ans;22}

2324

intmain()

33 cout35fclose(stdin);

36fclose(stdout);

37return0;

38 }

523 連續的子陣列和

解法一 字首和的暴力搜尋 o n 2 我們遍歷每乙個連續的序列,判斷他是否滿足條件,我們使用字首和 這種解法相信不用多說就會的 public boolean checksubarraysum int nums,int k 迴圈處理每一段連續的序列 for int i 0 i nums.length ...

(7)連續子陣列問題

include using namespace std 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因...

LeetCode523 連續子陣列和

1 未考慮的情況 k 0的情況,一般涉及到 和 都要優先考慮到除數為0的情況。k 0且陣列中有連續兩個0的情況,返回true 雙層迴圈,複雜度 o n 2 package com.leetcode.dp public class leet523 system.out.println checksub...