题解 | #数组分组#

数组分组

https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86

def solution(nums):
    Sum5 = Sum3 = 0
    tmp = []
    while nums:
        num = nums.pop()
        if num%5==0:
            Sum5 += num
        elif num%3==0:
            Sum3 += num
        else:
            tmp.append(num)
    sub = abs(Sum5 - Sum3)
    if not tmp:
        return False if sub else True
    pf = sorted(tmp)
    for i in range(1,len(tmp)):
        pf[i] += pf[i-1]
    Sumt = pf[-1]
    if sub==0:
        if not Sumt:
            return True
        if pf[-1]%2==0 and (pf[-1]/2) in pf:
            return True
        return False
    return True if findSub(tmp,sub) else False
def findSub(nums,target):
    def dfs(nums,S1,S2):
        if not nums:
            return True if abs(S1-S2) == target else False
        num = nums.pop()
        return dfs(nums[:],S1+num,S2) or dfs(nums[:],S1,S2+num)
    return dfs(nums,0,0)
 
n = int(input())
nums = list(map(int,input().split()))
if solution(nums): 
    print("true")
else:
    print("false")

#我拿到offer啦##好的APP推送需要满足什么条件##你觉得一款游戏为什么好玩#
全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务