题目地址:LeetCode#31.下一个排列

class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
if len(nums) < 2: return nums
for i in range(len(nums) - 1, 0, -1):
if nums[i] > nums[i - 1]:
nums[i:] = sorted(nums[i:])
for j in range(i, len(nums)):
if nums[j] > nums[i - 1]:
nums[j], nums[i - 1] = nums[i - 1], nums[j]
break
return
nums.sort()
看半天,思路是清晰的,就是结果总不对,对break的理解没搞清楚,又不仔细想,还一直想是不是交换两个数那句出了问题,return如果不加,那最后肯定怎么都是升序
好傻的我

本文详细解析了LeetCode题目#31“下一个排列”的算法实现,通过Python代码示例,深入探讨了如何在原地修改数组以找到下一个更大的排列。文章揭示了在算法设计中容易忽视的细节,如break语句的正确使用,以及如何确保代码的正确性和效率。

1604

被折叠的 条评论
为什么被折叠?



