Leetcode算法——553. 最优除法

2022/2/28 22:23:54

本文主要是介绍Leetcode算法——553. 最优除法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Leetcode算法——Leetcode算法——553. 最优除法

  • 题目
  • 思路
  • Python3解法

题目

题目链接

思路

数学问题
因为所有的数字都是由除法链接,所以不管分子如何变化,都可以将除第一个元素之外的元素移到分母。例 a / ( b / c ) d = a ( b / c ) × d \frac{a/(b/c)}{d} = \frac{a}{(b/c) \times d} da/(b/c)​=(b/c)×da​。所以输出结果的分子确定为列表中第一个元素,则什么时候这个数字能取到最大呢?分子确定时,分母越小整体越大,因为给定原始列表内元素都大于等于2所以将第第二个数字一直除以后面的所有数即可取到最小的分母。
注意,str.join(sequence),join函数将字符串str插入列表sequence每个元素之间(首尾不会添加)并返回拼接形成的字符串。

例
"!sfr!".join(["hust", "cs", "sorth", "cv"])
# 输出:hust!sfr!cs!sfr!sorth!sfr!cv

Python3解法

def optimalDivision(self, nums: List[int]) -> str:
        if len(nums)==1:
        	return str(nums[0])
        if len(nums)==2:
        	return '/'.join(map(str,nums))
        result = list(map(str,nums))
        result[1]='('+result[1]
        return '/'.join(result)+')'


这篇关于Leetcode算法——553. 最优除法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程