码迷,mamicode.com
首页 > 其他好文 > 详细

Target Sum

时间:2017-10-08 12:59:03      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:代码   结果   二叉树   技术分享   from   ota   gets   .com   div   

    这道题为中等题

  题目:

    技术分享

 

  思路:

    1、我最开始的思路:利用DFS,把它当成一个二叉树,但是结果超时,很疑惑,在网上查找,好像是没有进行尾递归优化,具体的尾递归概念大家可以百度一下

    2、还是使用DFS,但是利用字典存储中间值

    3、利用DP,利用两个字典,字典的键为一个数,键值表示为到达该数有多少种途径,每次循环之后就要用另一个字典进行覆盖

  代码:

    我的超时代码:

 1 class Solution(object):
 2     def findTargetSumWays(self, nums, S):
 3         """
 4         :type nums: List[int]
 5         :type S: int
 6         :rtype: int
 7         """
 8         return self.dfs(nums, S, 0, 0, len(nums))
 9         
10     def dfs(self, nums, S, index, total, list_long):
11         if index >= list_long:
12             if total == S: return 1
13             else: return 0
14         return self.dfs(nums, S, index+1, total+nums[index], list_long) + self.dfs(nums, S, index+1, total-nums[index], list_long)

    另一种DFS代码(AC):

 1 class Solution(object):
 2     def findTargetSumWays(self, nums, S):
 3         """
 4         :type nums: List[int]
 5         :type S: int
 6         :rtype: int
 7         """
 8         def findTarget(i, s):
 9             if (i, s) not in cache:
10                 r = 0
11                 if i == len(nums):
12                     if s == 0:
13                         r = 1
14                 else:
15                     r = findTarget(i+1, s-nums[i]) + findTarget(i+1, s+nums[i])
16                 cache[(i, s)] = r
17             return cache[(i, s)]
18         
19         cache = {}
20         return findTarget(0, S)

 

    DF代码(AC):

 1 class Solution(object):
 2     def findTargetSumWays(self, nums, S):
 3         from collections import defaultdict
 4         memo = {0: 1}
 5         for x in nums:
 6             m = defaultdict(int)
 7             for s, n in memo.iteritems():
 8                 m[s + x] += n
 9                 m[s - x] += n
10             memo = m
11         return memo[S]

 

Target Sum

标签:代码   结果   二叉树   技术分享   from   ota   gets   .com   div   

原文地址:http://www.cnblogs.com/liuxinzhi/p/7637008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!