Given an array of integers arr, sort the array by performing a series of pancake flips.
In one pancake flip we do the following steps:
k where 1 <= k <= arr.length.arr[0...k-1] (0-indexed).For example, if arr = [3,2,1,4] and we performed a pancake flip choosing k = 3, we reverse the sub-array [3,2,1], so arr = [1,2,3,4] after the pancake flip at k = 3.
Return an array of the k-values corresponding to a sequence of pancake flips that sort arr. Any valid answer that sorts the array within 10 * arr.length flips will be judged as correct.
Example 1:
Input: arr = [3,2,4,1] Output: [4,2,4,3] Explanation: We perform 4 pancake flips, with k values 4, 2, 4, and 3. Starting state: arr = [3, 2, 4, 1] After 1st flip (k = 4): arr = [1, 4, 2, 3] After 2nd flip (k = 2): arr = [4, 1, 2, 3] After 3rd flip (k = 4): arr = [3, 2, 1, 4] After 4th flip (k = 3): arr = [1, 2, 3, 4], which is sorted.
Example 2:
Input: arr = [1,2,3] Output: [] Explanation: The input is already sorted, so there is no need to flip anything. Note that other answers, such as [3, 3], would also be accepted.
Constraints:
1 <= arr.length <= 1001 <= arr[i] <= arr.lengtharr are unique (i.e. arr is a permutation of the integers from 1 to arr.length).This approach involves sorting the array by repeatedly moving the largest unsorted element to its correct position at the end. This is achieved by two flips: first flipping the array to get the largest element to the front, and then flipping up to the end of the unsorted part to push the largest element to the end.
The C solution identifies the maximum element in the unsorted portion of the array and brings it to the 0th index if it isn't already there. Then, it reverses the entire array up to the current unsorted subarray length to place the maximum at its sorted position. This process is repeated for the rest of the elements.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n^2) due to nested loops finding the maximum index and reversing. Space Complexity: O(1) due to in-place operations.
Pancake sort algorithm, visualization with VTK • Mario Storti • 87,015 views views
Watch 9 more video solutions →Practice Pancake Sorting with our built-in code editor and test cases.
Practice on FleetCode