
本文发布且更新于个人博客:https://www.xerrors.fun/leetcode/pancake-sorting/
1. 题目
给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。
返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。
题目链接:力扣(LeetCode)
2. 解题思路
解题思路分两部分,一种是自己拿到题目之后的想法,并不一定是正确的,主要是记录自己的心路历程以及思考过程。
分析思路
从目前的情况来看,很像是八数码的问题。首先使用动态规划来分析(吃一堑长一智),当前序列并不能转化为子序列来求解,因为序列的最优解并不包含子序列的最优解。Pass!
根据题目中的说明,任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。也就是不一定要是最优解,那么可以采用启发式搜索的办法。这里采用怎样一个启发函数呢?这里可以采用前后两个数相差为 1 的个数。
分析了一下时间复杂度,太高!Pass
官方思路
我还是太菜了,居然又把思路弄

本文介绍了LeetCode 969题目的煎饼排序问题,分析了如何通过翻转操作对数组进行排序。讨论了错误的动态规划和启发式搜索思路,指出了官方提供的正确解决方案,即找到最大值并将其翻转到末尾,重复此过程直至排序完成。虽然该方法时间复杂度较高,但对于寻找最小翻转次数可能有实际意义。并提供了相关代码实现。
最低0.47元/天 解锁文章
490

被折叠的 条评论
为什么被折叠?



