zoukankan      html  css  js  c++  java
  • Largest Number(leetcode 179)

    给定一个int数组(每个数字无前导0),要求用这些数字拼接出一个最大的数字。

    解决思路:
    对整个数组进行排序,把排序后的结果拼接起来。
    那么如何进行排序呢?只需要定义一个比较函数,如果str(x)+str(y)<str(y)+str(x),则说明y放在x前面比较合适。

    在Python中,sorted方法现在只能提供key作为比较函数,这个函数只能处理单个元素,没法进行两两比较,这是有局限性的。

    class Solution:
        # @param {integer[]} nums
        # @return {string}
        def cmp(self, x, y):
            return str(x) + str(y) < str(y) + str(x)
    
        def largestNumber(self, nums):
            for i in range(len(nums)):
                for j in range(i + 1, len(nums)):
                    if self.cmp(nums[i], nums[j]):
                        nums[i], nums[j] = nums[j], nums[i]
            print(nums)
            ans = ''.join(map(lambda x: str(x), nums)).lstrip('0')
            if ans == "":
                return "0"
            else:
                return ans
    
    
  • 相关阅读:
    DJANGO
    前端--BootStrap
    前端--JQuery
    前端--JavaScript
    前端--CSS
    前端--HTML
    python中面试题积累
    python中一些小的知识点
    python中字典的增删改查及相关知识点
    python中列表的增删改查以及其它相关方法
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7500586.html
Copyright © 2011-2022 走看看