【LeetCode】179. 最大数
LeetCode 最大数
2023-09-14 09:13:24 时间
1 题目
这题如果是第一次做,还是有点儿难度的,关键是如何想到一个比较的原则? 我们可以想到在冒泡排序中,我们比较的是两个数的大小,如果前者较大,则交换,使得较大的那个数放到后面。不停的操作使得每轮中的最大数放到最后一位,代码如下:
for i in range(len(nums)):
for j in range(len(nums)-i-1): # 表示已经排好的
# 按照大小排序,两两交换
if nums[j] > nums[j+1]:
nums[j],nums[j+1] = nums[j+1],nums[j]
但是本题是来找如何拼凑得到最大的一个数,比较的原则不再是两个数孰大孰小了,而是两个数的拼接的结果是孰大孰小?
2 思想
类似冒泡排序,不过比较的原则是是否可以组成一个更大数。
3 代码
class Solution:
def largestNumber(self, nums: List[int]) -> str:
# 将最大的放在最后,然后翻转一下数组
for i in range(len(nums)):
for j in range(len(nums)-i-1): # 表示已经排好的
# 按照大小排序,两两交换
if int(str(nums[j]) + str(nums[j+1])) > int(str(nums[j+1]) + str(nums[j])):
nums[j],nums[j+1] = nums[j+1],nums[j]
nums = list(reversed(nums))
res = ""
for i in nums:
res+=str(i)
# 需要去除前导0
res = res.lstrip("0")
if res == "":
return "0"
return res
相关文章
- LeetCode每日一题-4:合并两个有序链表
- LeetCode 1. 两数之和 Two Sum「建议收藏」
- LeetCode 700题 题解答案集合 Python
- ☆打卡算法☆LeetCode 187. 重复的DNA序列 算法解析
- leetcode-5最长回文子串(manacher算法)
- LeetCode排序链表C++解法(详解)
- LeetCode 235. 二叉搜索树的最近公共祖先
- Leetcode分类——递归、回溯、分治
- 用Js怒刷LeetCode
- leetcode 54. 螺旋矩阵 js高效实现
- leetcode刷题(129)——576. 出界的路径数
- leetcode 链表初探 21. merge two sorted lists
- 【Leetcode】链表的深度拷贝——复制带随机指针的链表
- 【算法】动态规划 ⑤ ( LeetCode 63.不同路径 II | 问题分析 | 动态规划算法设计 | 代码示例 )
- 「动态规划」LeetCode 70(爬楼梯)