题:给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [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