Leetcode每日一題 煎餅排序

2021-10-06 14:52:00 字數 938 閱讀 9831

給定陣列 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.讓最後一位數依次比較前面的數,若有比最後一位大的第n個數,將第n個數翻轉到第乙個數並停止比較。

2.重複1步驟,若直到比較到最後一位數都未發生翻轉(表明最後一位就是最大數)丟擲最大數。

3.重複2步驟,直到沒有沒有可丟擲的元素。排列完成

解題**:

class solution break;//發生翻轉後重新從第乙個數開始比較

}if(i==len) }}

return rs;//發回結果集

}}

每日一題 LeetCode

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...

LeetCode每日一題 1238 迴圈碼排列

tagmath difficultymedium link 根據89題格雷碼可以得知二進位制與格雷碼之間有這樣的規律 假設格雷碼第n位為g n 二進位制第n位為b n 對於n 1位,g n 1 b n 1 g n 1 b n 1 g n 1 b n 1 g n b n 1 xorb n g n b ...

LeetCode每日一題(題1028)

最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...