Giả sử có một danh sách các số nguyên không âm, chúng ta phải sắp xếp chúng sao cho tạo thành số lớn nhất có thể. Ví dụ, nếu mảng là [10, 2], số lớn nhất sẽ là 210.
Để giải quyết, chúng ta thực hiện các bước sau:
- Sắp xếp các số sao cho các chữ số quan trọng nhất lớn hơn đặt ở đầu, theo cách sắp xếp này. Sau đó chỉ cần nối các số từ mảng.
Ví dụ
Xem triển khai sau để hiểu rõ hơn:
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]))
Đầu vào
[3,30,5,6,8]
Đầu ra
"865330"