如果不存在下乙個更大的排列,則將數字重新排列成最小的排列(即公升序排列)。
必須原地修改,只允許使用額外常數空間。
以下是一些例子,輸入位於左側列,其相應輸出位於右側列。
1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1
解題思路:本題採用暴力解碼,直接從列表最後開始遍歷,當遍歷到的數字num[i]大於他的前乙個數字num[i-1]時,將當前位置(包含當前)以後的數字當成子列表進行公升序排列,然後遍歷排序後的子列表,發現第乙個比num[i]大的數字num[j]時,將num[i]與num[j]元素交換,然後返回列表。若遍歷到最後都未發現後乙個數大於前乙個數,則返回公升序排列後的列表。**如下:
class
solution
:def
nextpermutation
(self, nums: list[
int])-
>
none
:"""
do not return anything, modify nums in-place instead.
"""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
return nums.sort(
)
提交後,通過。 LeetCode第三十題 Python實現
title leetcode no.30 categories tags 給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的...
Android 第三十周
總結 asynctak 封裝了 thread 和 handler,所以可以在子執行緒中執行任務,在主線程中更新 ui 如果應用和主線程沒有互動,則應該使用 thread,而不是 asynctask 1.1 asynctask 的使用限制 1.asynctask 必須在主線程中載入,保證了 handl...
Leetcode第三十題 串聯所有單詞的子串
題目 給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman wo...