Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Largest Number ใน Python - จัดเรียงตัวเลขให้ได้ค่ามากที่สุด

สมมติว่ามีรายการจำนวนเต็มไม่ติดลบ เราต้องจัดเรียงให้พวกมันสร้างตัวเลขที่ใหญ่ที่สุด ตัวอย่าง ถ้าอาร์เรย์คือ [10, 2] ตัวเลขที่ใหญ่ที่สุดจะเป็น 210

ขั้นตอนการทำงาน

  1. จัดเรียงตัวเลขที่ตัวเลขหลักสำคัญ (most significant digits) มากกว่าวางไว้ก่อน จัดเรียงตัวเลขเหล่านั้น หลังจากนั้นรวมตัวเลขจากอาร์เรย์

ตัวอย่างโค้ด

from functools import cmp_to_key

class Solution(object):
    def largestNumber(self, nums):
        for i in range(len(nums)):
            nums[i] = str(nums[i])
        nums.sort(key=cmp_to_key(lambda x, y: self.compare(x, y)))
        return "".join(nums).lstrip("0") or "0"

    def compare(self, x, y):
        if x + y < y + x:
            return 1
        elif x + y == y + x:
            return 0
        else:
            return -1

ob1 = Solution()
print(ob1.largestNumber([3, 30, 5, 6, 8]))

อินพุต

[3,30,5,6,8]

เอาต์พุต

"865330"