解題思路 leetcode第三十一題 下乙個排列

2021-10-05 13:59:40 字數 1021 閱讀 3638

如果不存在下乙個更大的排列,則將數字重新排列成最小的排列(即公升序排列)。

必須原地修改,只允許使用額外常數空間。

以下是一些例子,輸入位於左側列,其相應輸出位於右側列。

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...