欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

程序员文章站 2024-03-24 09:46:04
...

题目:

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

分析:一道简单题,想用python写竟然花了1h之多。

代码:

class SmallerNumKey(str): # 定义一个类
    def __lt__(x, y):
        return x + y < y + x

class Solution:
    def minNumber(self, nums: List[int]) -> str:
        # map: 将nums每一项转化成str
        smallest_num = ''.join(sorted(map(str, nums),key=SmallerNumKey))
        return smallest_num

慢慢说学到的python:

1.排序,使用lambda进行排序是不太对了。不知道原因。

学习上述的自定义类来自己写一个比较函数。

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

本代码的改成数字的之后,报错:

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

2.列表中每个元素转化为字符串的方法。

①:

为何不行?

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

②:遍历list逐个转化:

nums = [str(i) for i in nums]~

3.合并字符串列表:

leetcode:剑指 Offer 45. 把数组排成最小的数(学习python,对python的自定义cmp很懵逼呀)

相关标签: python编程