整数の配列と整数kを考えると、あなたは、アレイ内の数と連続サブkの配列を見つける必要があります。
例1:
入力:NUMS = [1,1,1]、K = 2
つの異なるケース2、[1,1]及び[1,1]:出力。
説明:
配列の長さ[1 20,000]。
[-1000、1000]の配列の範囲内の要素、kは[-1e7、1E7]を範囲の整数です。
出典:ボタン(LeetCode)滞在
:リンクhttps://leetcode-cn.com/problems/subarray-sum-equals-k
すべてのネットワークからの控除が著作権を保有します。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。
アルゴリズム:暴力列挙
アルゴリズムII:最適化のハッシュテーブル、および前の接頭語を生き残る、特殊な取扱いH [0]へ
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
unordered_map<int,int> h;
int res=0;
h[0]=1;//特殊处理
for(int i=0,sum=0;i<nums.size();++i){
sum+=nums[i];
res+=h[sum-k];
h[sum]++;
}
return res;
}
};