969 煎餅排序

2021-10-08 13:43:57 字數 1084 閱讀 7024

題目描述:

給定陣列 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 <= a.length <= 100

a[i] 是 [1, 2, …, a.length] 的排列

方法1:

主要思路:

(1)這個題有了思路,起始也挺好做的;

(2)就直觀的想,每次把當前範圍內的最大煎餅放到當前範圍的最下面即可,如何放?找出當前範圍內的最大的煎餅,將該煎餅之前的所有煎餅反序,這樣該最大煎餅就到了最前面了,然後以當前範圍作為反序的物件,就把最前面的煎餅換到了當前範圍的最下面;

(3)每次把需要反序的煎餅數量儲存即可;

class solution

}//若當前的最大煎餅不是已經在當前範圍的最後位置,則進行兩次反轉操作

if(max_index!=size_a-i-1)

}return res;}}

;

969 煎餅排序

給定陣列a,我們可以對其進行煎餅翻 我們選擇一些正整數k a.length,然後反轉a的前k個元素的順序。我們要執行零次或多次煎餅翻轉 按順序一次接一次地進行 以完成對陣列a的排序。返回能使a排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在10 a.length範圍內的有效答案都將...

969 煎餅排序

給你乙個整數陣列 arr 請使用 煎餅翻轉 完成對陣列的排序。一次煎餅翻轉的執行過程如下 選擇乙個整數 k 1 k arr.length 反轉子陣列 arr 0.k 1 下標從 0 開始 例如,arr 3,2,1,4 選擇 k 3 進行一次煎餅翻轉,反轉子陣列 3,2,1 得到 arr 1,2,3,...

969 煎餅排序 medium

給定陣列 a,我們可以對其進行煎餅翻 我們選擇一些正整數 k a.length,然後反轉 a 的前 k 個元素的順序。我們要執行零次或多次煎餅翻轉 按順序一次接一次地進行 以完成對陣列 a 的排序。返回能使 a 排序的煎餅翻轉操作所對應的 k 值序列。任何將陣列排序且翻轉次數在 10 a.lengt...