|
发表于 2020-3-23 20:30:49
|
显示全部楼层
本帖最后由 TJBEST 于 2020-3-24 14:17 编辑
两个版本,大同小异,一个是用字典存储中间数据,一个纯递归。希望楼主都测一测,我不知道哪一个更快。
不用字典存储中间结果的版本
- def fun358(nums,s):
- def inner(end,num):
- if end==1:
- if num != 0:
- if nums[0]==num or nums[0]==-num:
- return 1
- else:
- return 0
- else:
- if nums[0]==0:
- return 2
- else:
- return 0
- else:
- return inner(end-1,num - nums[end-1])+inner(end-1,num + nums[end-1])
- return inner(len(nums),s)
复制代码
用字典存储结果的版本
- def fun358(nums,s):
- def inner(end,num):
- if (end,num) in dic:
- return dic[(end,num)]
- if end==1:
- if num != 0:
- if nums[0]==num or nums[0]==-num:
- dic[(1,num)]=1
- return 1
- else:
- dic[(1,num)]=0
- return 0
- else:
- if nums[0]==0:
- dic[(1,num)]=2
- return 2
- else:
- dic[(1,num)]=0
- return 0
- else:
- temp = inner(end-1,num - nums[end-1])+inner(end-1,num + nums[end-1])
- dic[(end,num)]=temp
- return temp
- dic = dict()
- return inner(len(nums),s)
复制代码 |
评分
-
查看全部评分
|