1. 程式人生 > >隨手練——返回累加和為k的最長子數組長度

隨手練——返回累加和為k的最長子數組長度

累加 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的最長子數組長度