在 Python 中的二进制列表中查找总和为 k 的子列表数量的程序
假设我们有一个包含0或1的二进制列表。我们还有另一个名为k的输入,我们必须找到总和与k相同的子列表的数量。
因此,如果输入类似于nums=[1,0,0,1,1,1,0,1]k=3,那么输出将为8,因为子列表是[1,0,0,1,1],[0,0,1,1,1],[0,0,1,1,1,0],[0,1,1,1],[0,1,1,1,0],[1,1,1],[1,1,1,0][1,1,0,1]。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, k):
sums = {0: 1}
r_sum = 0
ans = 0
for x in nums:
r_sum += x
ans += sums.get(r_sum - k, 0)
sums[r_sum] = sums.get(r_sum, 0) + 1
return ans
nums = [1, 0, 0, 1, 1, 1, 0, 1]
k = 3
print(solve(nums, k))输入
[1, 0, 0, 1, 1, 1, 0, 1], 3输出结果
8