969. 煎餅排序
給定陣列 a,我們可以對其進行煎餅翻**我們選擇一些正整數 k <= a.length,然後反轉 a 的前 k 個元素的順序。我們要執行零次或多次煎餅翻轉(按順序一次接一次地進行)以完成對陣列 a 的排序。
返回能使 a 排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在 10 * a.length 範圍內的有效答案都將被判斷為正確。
示例 1:
輸入:[3,2,4,1]
輸出:[4,2,4,3]
解釋:我們執行 4 次煎餅翻轉,k 值分別為 4,2,4,和 3。
初始狀態 a = [3, 2, 4, 1]
第一次翻轉後 (k=4): a = [1, 4, 2, 3]
第二次翻轉後 (k=2): a = [4, 1, 2, 3]
第三次翻轉後 (k=4): a = [3, 2, 1, 4]
第四次翻轉後 (k=3): a = [1, 2, 3, 4],此時已完成排序。
示例 2:
輸入:[1,2,3]
輸出:解釋:
輸入已經排序,因此不需要翻轉任何內容。
請注意,其他可能的答案,如[3,3],也將被接受。
例如[1,2,5,4,3]
找到5的索引,2,翻轉。[5,2,1,4,3]
再整個翻轉,把5放在最後,[3,4,1,2,5]。此時,可以發現規律:**5前面的數還是再5的前面,5後面的數翻轉了一下,放在了首部。
所以可以根據這個給規律,進行規律翻轉
class
solution
:def
pancakesort
(self, a: list[
int])-
> list[
int]
: n =
len(a)
res =
for i in
range
(n,1,-
1): index = a.index(i)
#找到當前最大值的索引
a = a[index+
1:i][:
:-1]
+ a[
:index]
+[i]
+ a[i:
]#將最大值放在尾部,按照規律翻轉
res +=
[index+
1, i]
#每次操作是兩個步驟,並且數字的索引還要加一
return res
leetcode 969 煎餅排序
題目 給定陣列 a,我們可以對其進行煎餅翻 我們選擇一些正整數 k a.length,然後反轉 a 的前 k 個元素的順序。我們要執行零次或多次煎餅翻轉 按順序一次接一次地進行 以完成對陣列 a 的排序。返回能使 a 排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在 10 a.le...
LeetCode 969 煎餅排序
給定陣列 a,我們可以對其進行煎餅翻 我們選擇一些正整數 k a.length,然後反轉 a 的前 k 個元素的順序。我們要執行零次或多次煎餅翻轉 按順序一次接一次地進行 以完成對陣列 a 的排序。返回能使 a 排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在 10 a.lengt...
LeetCode 969 煎餅排序
給定陣列 a,我們可以對其進行煎餅翻 我們選擇一些正整數 k a.length,然後反轉 a 的前 k 個元素的順序。我們要執行零次或多次煎餅翻轉 按順序一次接一次地進行 以完成對陣列 a 的排序。返回能使 a 排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在 10 a.lengt...