0%

LEETCODE LargestNumbers最大数

Largest Numbers 最大数

题目: leetcode 179

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

Given a list of non-negative integers nums, arrange them such that they form the largest number.

Note: The result may be very large, so you need to return a string instead of an integer.

思路

要使一个数字最大,每个数位上的数字一定比之后数位上的数字大。当有数字不能拆分的时候, 那么就要以这个数字为整体来做比较。当我们可以比较出来大小得时候,就可以用排序算法将数字排列出来,再通过string合并起来。

比较方法

1
2
3
4
5
6
7
8
int a, b
# suppose a = 32, b = 36, ab = 3236, ba = 3632
def compare(a,b):
if str(a)+str(b) > str(b)+str(a):
return True
# means a is larger then b
else:
return False

排序方法

  1. 快排Quicksort
  2. python自带
    1
    nums.sort(key=cmp_to_key(self.compare), reverse=True)

** 个人笔记, 如有错误请指出。