最优除法

128 阅读1分钟

最优除法

image.png

贴一下代码

function optimalDivision(nums: number[]): string {
    if(nums.length === 1) return nums[0] + '';
    if(nums.length === 2) return nums[0]  + '/' + nums[1];
    let s = nums.shift();
    let result = '';
    for(let i = 0; i < nums.length; i++){
        if(i === nums.length-1){
            result = result + nums[i]
        } else {
            result = result + nums[i] + '/'
        }
    }
    result = s + '/' + '(' + result + ')'
    return result
};

思路:

  • 直接写确实我做不出来【doge】,看了下评论区大佬的思路
  • 因为所有的数字都是 / 连接的,所以这个是除数和被除数的关系,要想让结果最大,那就是除数最小
  • 所以除数最小的方式是除了第一项外,后面所有的数相除后的结果最小