📅  最后修改于: 2023-12-03 15:39:55.156000             🧑  作者: Mango
这是一道涉及到算法和数据结构的问题,需要程序员有一定的基础知识和实践经验。该问题可以用两种方式来解决:Brute Force和排序。接下来将对这两种方式分别进行介绍。
Brute Force的做法是对每个数进行拼接,然后比较大小。这种做法的时间复杂度为O(n^2),其中n是数字列表的长度。代码如下所示:
def largest_number(arr):
res = ""
for i in range(len(arr)):
for j in range(i+1, len(arr)):
if int(str(arr[i])+str(arr[j]))<int(str(arr[j])+str(arr[i])):
arr[i], arr[j] = arr[j], arr[i]
return "".join(str(num) for num in arr)
将数字列表进行排序,排完序后直接将数字拼接起来即可。这种做法的时间复杂度为O(nlogn),其中n是数字列表的长度。代码如下所示:
def largest_number(arr):
arr = sorted(arr, key=lambda x: str(x), reverse=True)
return "".join(str(num) for num in arr)
上述两种解法的时间复杂度均可以通过该题。
参考资料:对数组进行排序使其组成最大的数