494. 目标和

旧巷老猫 提交于 2019-11-26 23:17:38
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]; 
      }
};

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!