【LeetCode】Pancake Sorting(煎饼排序)
这道题是LeetCode里的第969道题。
题目要求:
给定数组
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 <= 100A[i]是[1, 2, ..., A.length]的排列
这道题其实很简单,我提醒一下就行了:就是每次排序把最大的数放前面,然后再放到最后面。
解题过程中最需要注意的是交换不能直接首尾交换,而是要以中间为轴,两两对称交换,可能直接首尾交换能过,因为题目没有限制答案,但我不敢保证绝对能过。
解题代码:
class Solution {
public List<Integer> pancakeSort(int[] A) {
int maxNum=0;
int maxIndex=0;
boolean flag=true;
int k=0,len=A.length;
List<Integer>res=new ArrayList<>();
while(flag){
//int i=1;
maxNum=A[0];maxIndex=0;
for(int i=1;i<len-k;i++){
if(maxNum<A[i]){maxNum=A[i];maxIndex=i;}
}
if(maxIndex!=0)res.add(maxIndex+1);
int tempCnt=(int)((maxIndex+1)/2);
for(int i=0;i<tempCnt;i++){
int temp=A[i];
A[i]=A[maxIndex-i];
A[maxIndex-i]=temp;
}
//r(int i=0;i<len;i++)
// System.out.print(A[i]+"");
//stem.out.print("\n");
res.add(len-k);
tempCnt=(int)((len-k)/2);
for(int i=0;i<tempCnt;i++){
int temp=A[i];
A[i]=A[len-i-1-k];
A[len-i-1-k]=temp;
}
k++;
//for(int i=0;i<len;i++)
// System.out.print(A[i]+"");
//System.out.print("\n");
flag=false;
for(int i=1;i<len;i++){
if(A[i-1]>A[i]){flag=true;break;}
}
}
return res;
}
}
题解结果:

个人感悟:
没有,就是吐槽这道题的答案太随意了。
【LeetCode】Pancake Sorting(煎饼排序)的更多相关文章
- 【LeetCode】969. Pancake Sorting 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟法 日期 题目地址:https://leetco ...
- Leetcode 969. 煎饼排序
969. 煎饼排序 显示英文描述 我的提交返回竞赛 用户通过次数134 用户尝试次数158 通过次数135 提交次数256 题目难度Medium 给定数组 A,我们可以对其进行煎饼翻转:我们选择 ...
- Hark的数据结构与算法练习之煎饼排序
算法说明 假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列.这个排序的过程就是煎饼排序. 这 ...
- BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 215[S ...
- BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心
BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...
- 【BZOJ 1697】1697: [Usaco2007 Feb]Cow Sorting牛排序
1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大 ...
- LeetCode 81——搜索旋转排序数组 II
1. 题目 2. 解答 2.1. 方法一 基于 LeetCode 33--搜索旋转排序数组 中的方法二. 当 nums[mid] = nums[right] 时,比如 [1, 1, 2, 1, 1], ...
- LeetCode:搜索旋转排序数组【33】
LeetCode:搜索旋转排序数组[33] 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ...
- LeetCode969. 煎饼排序
问题:969. 煎饼排序 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序.我们要执行零次或多次煎饼翻转(按顺序一次接 ...
随机推荐
- PHP中的文件操作
文件系统的概述 任何类型的变量在运行的时候都是将其加载到内存里面.但是内存有一个特点:CPU读取内存的速度很快,但是一旦断电,内存里面的数据就会消失.如果要持久的保存数据,有两种方法:将数据存储到 ...
- android开发学习 ------- 上传本地项目到gitlab
写了一个demo,上传到gitlab 参考 https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1:新建项目,填写相应的 ...
- js实现文本框验证和实现小数的加减乘除
<script type="text/javascript"> //加法 var m=accAdd(1.22,1.22); //减法 var m1=accSub(1.2 ...
- find搜索文件系统,实时搜索
find搜索文件系统.实时搜索 find[目录][条件][动作] [目录] 不输入目录代表当前目录 find find /etc ----------------------------------- ...
- HDU 4274 Spy's Work (树形DP,模拟)
题意: 给定一棵树,每个节点代表一个员工,节点编号小的级别就小,那么点1就是boss了.接下来给出对m个点的限制,有3种符号分别是op=“大于/小于/等于”,表示以第i个点为根的子树所有人的工资之和 ...
- HDU 1964 Pipes (插头DP,变形)
题意:给一个n*m的矩阵,每个格子都是必走的,且无障碍格子,每对格子之间都有一个花费,问哈密顿回路的最小花费. 思路: 这个和Formula1差不多,只是求得是最小花费,这只需要修改一下DP值为花费就 ...
- OpenGL列主元矩阵和列主序存储
OpenGL矩阵要考虑两个点,一个是向量如何排布,一个是矩阵如何存储和恢复. 1.排布 排布决定了运算的顺序.OpenGL使用的是列主元,它的意思就是一个4X4的矩阵是由4个列向量构成(这里的v1,v ...
- Gym 100342I Travel Agency (Tarjan)
题意读懂了就好做了,就是求一下点双连通分量.维护一下一颗子树的结点数,对于一个结点当u是割点的时候, 统计一下u分割的连通分量v,每得到一个连通分量的结点数cnt(v)和之前连通分量结点数sum相乘一 ...
- leetcode_1048. Longest String Chain_[DP,动态规划,记忆化搜索]
1048. Longest String Chain https://leetcode.com/problems/longest-string-chain/ Let's say word1 is a ...
- Navicat连接Oracle详细教程
Navicat Premium算是比较好的一个可视化数据库管理工具了,短小精悍,一个工具解决三种数据库的连接问题,真正做到了集成管理,对MySQL,SQLServer而言,连接比较简单,就不赘述了,现 ...