Docker Desktop 运行 Redis 全攻略:从镜像拉取到持久化配置与排错
2026/10/11 19:13:29
给定一个整数数组nums和一个整数k,请统计并输出该数组中连续子数组和为k的个数。
第一行输入一个整数n,表示数组长度。
第二行输入n个整数,表示数组nums。
第三行输入一个整数k。
输出和为k的连续子数组个数。
输入
text
3 1 1 1 2
输出
text
2
说明
有两个子数组和为 2:[1,1]和[1,1]。
输入
text
3 1 2 3 3
输出
text
2
说明
子数组[3]和[1,2]的和都是 3。
cpp
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) cin >> nums[i]; int k; cin >> k; unordered_map<int, int> mp; mp[0] = 1; int sum = 0; int ans = 0; for (int x : nums) { sum += x; if (mp.count(sum - k)) { ans += mp[sum - k]; } mp[sum]++; } cout << ans << endl; return 0; }