494. 目标和

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int S) {
        int n=nums.size();
        if(n==0) return 0;
        map<int, int>cur;
        cur[nums[0]]=1;
        cur[-nums[0]]+=1;  
        map<int, int>nxt;
        for(int i=1; i<n; i++)
        {    
            nxt.clear();
            for(auto it=cur.begin(); it!=cur.end(); it++)
            {
                nxt[it->first+nums[i]]+=cur[it->first];
                nxt[it->first-nums[i]]+=cur[it->first];
            }   
            cur=nxt; 
        }
        if(n==1 &&(nums[0]==S || -nums[0]==S))
            return 1;
        return nxt[S]; 
      }
};

 

上一篇:Palindrome Number


下一篇:刷题494. Target Sum