x = [3, 2, 3, 3, 2, 8]
k = 8
def count_min_length_subarrays(x, k):
# Maps prefix_sum -> list of indices where it occurred
# (Since we want all valid windows, we track all occurrences)
prefix_map = {0: [-1]}
current_sum = 0
min_len = float('inf')
count = 0
for index, value in enumerate(x):
current_sum += value
target = current_sum - k
# If the complement prefix sum exists, we found valid subarrays
if target in prefix_map:
for start_index in prefix_map[target]:
length = index - start_index
if length < min_len:
min_len = length
count = 1 # Reset count for the new strictly smaller minimum length
elif length == min_len:
count += 1 # Increment count for matching the current minimum length
# Record the current prefix sum index
if current_sum not in prefix_map:
prefix_map[current_sum] = []
prefix_map[current_sum].append(index)
return min_len, count
min_length, frequency = count_min_length_subarrays(x, k)
print(f"Minimum Length: {min_length}")
print(f"Count of Minimum Length Subarrays: {frequency}")
eCA9IFszLCAyLCAzLCAzLCAyLCA4XQprID0gOAoKZGVmIGNvdW50X21pbl9sZW5ndGhfc3ViYXJyYXlzKHgsIGspOgogICAgIyBNYXBzIHByZWZpeF9zdW0gLT4gbGlzdCBvZiBpbmRpY2VzIHdoZXJlIGl0IG9jY3VycmVkCiAgICAjIChTaW5jZSB3ZSB3YW50IGFsbCB2YWxpZCB3aW5kb3dzLCB3ZSB0cmFjayBhbGwgb2NjdXJyZW5jZXMpCiAgICBwcmVmaXhfbWFwID0gezA6IFstMV19IAogICAgY3VycmVudF9zdW0gPSAwCiAgICAKICAgIG1pbl9sZW4gPSBmbG9hdCgnaW5mJykKICAgIGNvdW50ID0gMAogICAgCiAgICBmb3IgaW5kZXgsIHZhbHVlIGluIGVudW1lcmF0ZSh4KToKICAgICAgICBjdXJyZW50X3N1bSArPSB2YWx1ZQogICAgICAgIHRhcmdldCA9IGN1cnJlbnRfc3VtIC0gawogICAgICAgIAogICAgICAgICMgSWYgdGhlIGNvbXBsZW1lbnQgcHJlZml4IHN1bSBleGlzdHMsIHdlIGZvdW5kIHZhbGlkIHN1YmFycmF5cwogICAgICAgIGlmIHRhcmdldCBpbiBwcmVmaXhfbWFwOgogICAgICAgICAgICBmb3Igc3RhcnRfaW5kZXggaW4gcHJlZml4X21hcFt0YXJnZXRdOgogICAgICAgICAgICAgICAgbGVuZ3RoID0gaW5kZXggLSBzdGFydF9pbmRleAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiBsZW5ndGggPCBtaW5fbGVuOgogICAgICAgICAgICAgICAgICAgIG1pbl9sZW4gPSBsZW5ndGgKICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDEgICMgUmVzZXQgY291bnQgZm9yIHRoZSBuZXcgc3RyaWN0bHkgc21hbGxlciBtaW5pbXVtIGxlbmd0aAogICAgICAgICAgICAgICAgZWxpZiBsZW5ndGggPT0gbWluX2xlbjoKICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxICMgSW5jcmVtZW50IGNvdW50IGZvciBtYXRjaGluZyB0aGUgY3VycmVudCBtaW5pbXVtIGxlbmd0aAogICAgICAgIAogICAgICAgICMgUmVjb3JkIHRoZSBjdXJyZW50IHByZWZpeCBzdW0gaW5kZXgKICAgICAgICBpZiBjdXJyZW50X3N1bSBub3QgaW4gcHJlZml4X21hcDoKICAgICAgICAgICAgcHJlZml4X21hcFtjdXJyZW50X3N1bV0gPSBbXQogICAgICAgIHByZWZpeF9tYXBbY3VycmVudF9zdW1dLmFwcGVuZChpbmRleCkKICAgICAgICAKICAgIHJldHVybiBtaW5fbGVuLCBjb3VudAoKbWluX2xlbmd0aCwgZnJlcXVlbmN5ID0gY291bnRfbWluX2xlbmd0aF9zdWJhcnJheXMoeCwgaykKcHJpbnQoZiJNaW5pbXVtIExlbmd0aDoge21pbl9sZW5ndGh9IikKcHJpbnQoZiJDb3VudCBvZiBNaW5pbXVtIExlbmd0aCBTdWJhcnJheXM6IHtmcmVxdWVuY3l9IikK