そして、kはleetcodeの部分配列であります

整数の配列と整数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;
    }
};

おすすめ

転載: www.cnblogs.com/clear-love/p/11417704.html