在 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