能被 K 整除的最大連續子串長度

2022-08-29 19:57:13 字數 782 閱讀 2377

【**】網上流傳的2017美團秋招筆試題

【問題描述】

兩個測試樣例輸出都是5

【演算法思路】

暴力解法時間會超限,使用一種很巧妙的數學方法。用在讀取陣列arr時用陣列sum記錄其前 i 項的和,即 sum[i] = arr[1]+arr[2]+...+arr[i]。利用這乙個數學性質:假設前m項之和被 k 除后餘數是 x, 前n項之和被 k 除后餘數也是 x, 則m+1-n的子串行之和肯定能被k整除。

【**】

1 #include2 #include3

#define maxn 100005

4using

namespace

std;56

intsum[maxn];

7int

arr[maxn];

8int

pos[maxn];

9int

main()

18 cin >>k;

19 fill(pos, pos +maxn, int_max);

20int maxl = 0;21

for (int i = 1; i <=n; i++)

28 pos[m] =min(pos[m], i);29}

30 cout << maxl <

31return0;

32 }

1003 最大連續子串和

乙個經典問題,對於乙個包含負值的數字串array 1.n 要找到他的乙個子串array i.j 0 i j n 使得在array的所有子串中,array i.j 的和最大。這裡我們需要注意子串和子串行之間的區別。子串是指數組中連續的若干個元素,而子串行只要求各元素的順序與其在陣列中一致,而沒有連續的...

401最大連續乘積子串

給乙個浮點數序列,取最大乘積連續子串的值,例如 2.5,4,0,3,0.5,8,1,則取出的最大乘積連續子串為3,0.5,8。也就是說,上述陣列中,3 0.5 8這3個數的乘積3 0.5 8 12是最大的,而且是連續的。思路1 暴力法 將所有的可能都羅列出來,時間複雜度為o n 2 double m...

最大連續子串行的和

問題描述 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和,不必求出最大的那個序列。例如 序列 2 11 4 13 5 2,則最大子串行和為20。序列 6 2 4 7 5 3 2 1 6 9 10 2,則最大子串行和為16。演算法一 窮舉法,複雜度o n 3 最容易想到也是最...