Lintcode 791. Merge Number (Medium) (Python) (未完成)

Merge Number

Description:

Given n numbers, now we need to merge n numbers into one number. And each time we can only select and merge two numbers a,b. Each merger needs to consume a+b energy. Output the minimum energy consumed by merging n numbers.

Example
Given [1,2,3,4], return 19

Explanation:
Merge 1,2, which consumes 3 energy, and the rest is [3,4,3]. Merge 3,3, which consumes 6 energy, and the rest is [6,4]. Merge the last two numbers, which consumes 10 energy, and a total of 19 energy was consumed.
Given [2,8,4,1], return 25

explanation:
Merge 1,2, which consumes 3 energy, and the rest is [8,4,3]. Merge 3,4, which consumes 7 energy, and the rest is [7,8]. Merge the last two numbers, which consumes 15 energy, and a total of 25 energy was consumed.
Notice
2 <= n <= 50000, the combined number will not exceed the int range

Code:

超时

class Solution:
    """
    @param numbers: the numbers
    @return: the minimum cost
    """
    def mergeNumber(self, numbers):
        # Write your code here
        numbers.sort()
        sum = 0
        print numbers
        while len(numbers)>1:
            cnt, numbers = self.helper(numbers)
            sum += cnt
        return sum

    def helper(self, numbers):
        cnt = numbers[0] + numbers[1]
        numbers = numbers[2:]
        numbers.append(cnt)
        numbers.sort()
        return cnt, numbers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值