首先,这个问题可以抽象成一道算法题,用数组来表示烧饼堆:
如何解决这个问题呢?其实类似上篇文章 递归思维:k 个一组反转链表,这也是需要递归思想的。
一、思路分析
为什么说这个问题有递归性质呢?...// 记录反转操作序列
LinkedList res = new LinkedList();
List pancakeSort(int[] cakes) {...显然,这个结果不是最优的(最短的),比如说一堆煎饼 [3,2,4,1],我们的算法得到的翻转序列是 [3,4,2,3,1,2],但是最快捷的翻转方法应该是 [2,3,4]:
初始状态 :[3,2,4,1...]
翻前 2 个:[2,3,4,1]
翻前 3 个:[4,3,2,1]
翻前 4 个:[1,2,3,4]
如果要求你的算法计算排序烧饼的最短操作序列,你该如何计算呢?...或者说,解决这种求最优解法的问题,核心思路什么,一定会使用到什么算法技巧呢?
不妨分享一下你的思考。