553.最优除法--python

题:给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。要找出怎么添加括号,才能得到最大的结果,并且返回的表达式不应该含有冗余的括号。

法:可以发现nums中第一个数永远在分子上,第二个数永远作为被除数在分母上,那么如果后面的数都可以在分子上,就可以获得最大结果。所以根据例子:给定 [1000,100,10,2],输出 "1000/(100/10/2)",我们发现要在第二个数的前面添加括号,并且后面都是除法。

注意:要考虑len(nums)==1时,不应该存在‘/'和括号;len(nums)==2时,不应该存在括号。这两种情况单拿出来考虑。

def optimalDivision(self, nums):
        """
        :type nums: List[int]
        :rtype: str
        """
        length=len(nums)
        if length==1:
            return str(nums[0])
        elif length==2:
            return str(nums[0])+"/"+str(nums[1])
    
        res=''
        for i in range (length):
            if i==0:
                res+=str(nums[i])+"/("
            elif i==length-1:
                res+=str(nums[i])+")"
            else:
                res+=str(nums[i])+'/'
        return res
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值