【**】網上流傳的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 最容易想到也是最...