LeetCode第三十一題 下乙個排列

2021-09-20 21:38:37 字數 753 閱讀 8375

問題簡介:給定乙個陣列,將數字重新排列到字典上的下乙個更大的數字排列,當沒有這種排列方式時,即將陣列公升序排列

舉例:1.

給定陣列[1,2,4,3,0]

結果陣列[1,3,0,2,4]

解釋:可以倒序看給定陣列,在數字4處遇見更小的數值2時,從陣列末尾處向前找打第乙個比2大的數字,即3,交換兩個數字,這時陣列為[1,3,4,2,0],然後在交換後的數字2處往後進行反轉,這時陣列為[1,3,0,2,4]

2.給定陣列[5,4,3,1,0]

結果陣列[0,1,3,4,5]

解釋:當原陣列為降序排列時,將陣列反轉即公升序排列

注:1.要求使用恆定的空間

2.不需要返回值,結果即為原陣列nums

解法一:

當陣列只有0或乙個元素時即不處理陣列.將陣列從後向前遍歷,將當前索引i處數值與i-1處相比,當遇到小於當前值時,記錄i,當i為0時即為降序排序只要反轉陣列即可,當i不為0時,進行處理,交換倒序第乙個大於i-1處的值,從i處開始反轉陣列

class solution 

int temp = 0;

if (i == 0)

} else

}length--;

while (i < length) }}

}

複雜度分析:

時間複雜度:o(n)都是單層遍歷

空間複雜度:o(1)使用的恆定空間

小白刷題之路,請多指教— — 要麼大器晚成,要麼石沉大海

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

如果不存在下乙個更大的排列,則將數字重新排列成最小的排列 即公升序排列 必須原地修改,只允許使用額外常數空間。以下是一些例子,輸入位於左側列,其相應輸出位於右側列。1,2,3 1,3,2 3,2,1 1,2,3 1,1,5 1,5,1 解題思路 本題採用暴力解碼,直接從列表最後開始遍歷,當遍歷到的數...

LeetCode第三十一題 Python實現

title leetcode no.31 categories tags 實現獲取 下乙個排列 的函式,演算法需要將給定數字序列重新排列成字典序中下乙個更大的排列。如果不存在下乙個更大的排列,則將數字重新排列成最小的排列 即公升序排列 必須 原地 修改,只允許使用額外常數空間。示例 1 輸入 num...

第三十一天

一 單行函式 每一行都會執行一次的函式 eg pet表中每乙個pname的長度 select pname,char length pname from pet where char length pname 2 char length 列 獲取列的值的字元長度 單行函式的分類 1.數值型別 roun...