luoheng
8/31/2019 - 6:17 AM

数组中和为K的所有连续子序列

# only for element > 0

def EqualK(A, s):
    left = 0
    Sum = 0
    for ind, value in enumerate(A):
        Sum += value
        while Sum >= s:
            if Sum == s:
                yield A[left:ind+1]
            Sum -= A[left]
            left += 1

def main():
    A = [13, 7, 3, 6, 6, 5, 7, 6, 3, 2, 9, 5, 6, 4, 5]
    print(list(EqualK(A, 20)))

if __name__ == "__main__":
    main()