179. Largest Number

从昨天到现在,脑子真的很乱,基本不知道自己在干什么。

问题描述

Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.

问题分析

参考九章算法,即将原来的int数组转换为str数组后,比较任意两个x、y,如果x+y > y+x, 那么x应该放在y前面,这样就将这个问题变成了一个排序问题。

AC代码

class Solution:
    # @param {integer[]} nums
    # @return {string}
    def largestNumber(self, nums):
        strs = []
        for i in nums:
            strs.append(str(i))
        strs = sorted(strs, cmp=lambda x,y: 1 if x+y < y+x else -1)
        rst = ''.join(strs)
        i = 0
        while rst[0] == '0' and i < len(rst)-1:
            i += 1
        return rst[i:]

Runtime: 52 ms, which beats 90.00% of Python submissions.
语法知识点:sorted函数及lambda表达式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,792评论 0 33
  • 不知不觉已经进入最热的夏天了。“宁静的夏天,天空中繁星点点……”被火热太阳炙烤着走在上班、下班的路上,望着放暑假孩...
    甘棠读书阅读 336评论 1 1
  • 《朱子治家格言》自问世以来流传甚广,被历代士大夫尊为"治家之经",清至民国年间一度成为童蒙必读课本之一。 朱用纯其...
    一日同风起阅读 425评论 0 0
  • 00 我是一个智脑。 确切来说,我是由一个智能芯片而进化出来的人格。 如果你还不明白,那么再进一步。按照教科书上的...
    殊婴阅读 541评论 1 4