สมมติว่ามีรายการของจำนวนเต็มที่ไม่ติดลบ เราต้องจัดเรียงพวกมันให้เป็นจำนวนที่มากที่สุด ดังนั้นหากอาร์เรย์คือ [10, 2] จำนวนที่มากที่สุดจะเป็น 210
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- จัดเรียงตัวเลขโดยที่ตัวเลขที่มีนัยสำคัญมากกว่าตำแหน่งแรก เช่น การจัดเรียงตัวเลข หลังจากนั้นก็รวมตัวเลขจากอาร์เรย์
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
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"