隨手練——返回累加和為k的最長子數組長度
阿新 • • 發佈:2019-02-23
累加 main 用兩個 數組 stream bsp sub pan ++
1.數組全是正數
思路: 用兩個指針,左,右 指針初始都指向數組0位置。記錄左、右區間和。- 如大於k則左指針+1。
- 如果小於K則右指針+1
- 如果等於k則左右指針同時+1
#include <iostream> using namespace std; int maxSubKSequence(int *a, int k, int length) { int i = 0, j = 0, res = 0, max = 0; while (j < length) { if (res < k) { res+= a[j++]; } else if (res > k) { res -= a[i++]; } else { max = max > j - i + 1 ? max : j - i + 1; res += a[j++]; res -= a[i++]; } } return max; } int main() { int a[10] = { 1,4,5,3,1,0,5,4,4,6}; cout<< maxSubKSequence(a, 13, 10); return 0; }
隨手練——返回累加和為k的最長子數組長度