📌  相关文章
📜  教资会网络 | UGC NET CS 2016 年 8 月 – II |问题 26(1)

📅  最后修改于: 2023-12-03 15:39:55.156000             🧑  作者: Mango

教资会网络 | UGC NET CS 2016 年 8 月 – II | 问题 26

这是一道涉及到算法和数据结构的问题,需要程序员有一定的基础知识和实践经验。该问题可以用两种方式来解决:Brute Force和排序。接下来将对这两种方式分别进行介绍。

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)

上述两种解法的时间复杂度均可以通过该题。

参考资料:对数组进行排序使其组成最大的数