这道题是LeetCode里的第969道题。

题目要求:

给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A的排序。

返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length范围内的有效答案都将被判断为正确。

示例 1:

  1. 输入:[3,2,4,1]
  2. 输出:[4,2,4,3]
  3. 解释:
  4. 我们执行 4 次煎饼翻转,k 值分别为 424,和 3
  5. 初始状态 A = [3, 2, 4, 1]
  6. 第一次翻转后 (k=4): A = [1, 4, 2, 3]
  7. 第二次翻转后 (k=2): A = [4, 1, 2, 3]
  8. 第三次翻转后 (k=4): A = [3, 2, 1, 4]
  9. 第四次翻转后 (k=3): A = [1, 2, 3, 4],此时已完成排序。

示例 2:

  1. 输入:[1,2,3]
  2. 输出:[]
  3. 解释:
  4. 输入已经排序,因此不需要翻转任何内容。
  5. 请注意,其他可能的答案,如[33],也将被接受。

提示:

  1. 1 <= A.length <= 100
  2. A[i] 是 [1, 2, ..., A.length] 的排列

这道题其实很简单,我提醒一下就行了:就是每次排序把最大的数放前面,然后再放到最后面。

解题过程中最需要注意的是交换不能直接首尾交换,而是要以中间为轴,两两对称交换,可能直接首尾交换能过,因为题目没有限制答案,但我不敢保证绝对能过。

解题代码:

  1. class Solution {
  2. public List<Integer> pancakeSort(int[] A) {
  3. int maxNum=0;
  4. int maxIndex=0;
  5. boolean flag=true;
  6. int k=0,len=A.length;
  7. List<Integer>res=new ArrayList<>();
  8. while(flag){
  9. //int i=1;
  10. maxNum=A[0];maxIndex=0;
  11. for(int i=1;i<len-k;i++){
  12. if(maxNum<A[i]){maxNum=A[i];maxIndex=i;}
  13. }
  14. if(maxIndex!=0)res.add(maxIndex+1);
  15. int tempCnt=(int)((maxIndex+1)/2);
  16. for(int i=0;i<tempCnt;i++){
  17. int temp=A[i];
  18. A[i]=A[maxIndex-i];
  19. A[maxIndex-i]=temp;
  20. }
  21. //r(int i=0;i<len;i++)
  22. // System.out.print(A[i]+"");
  23. //stem.out.print("\n");
  24. res.add(len-k);
  25. tempCnt=(int)((len-k)/2);
  26. for(int i=0;i<tempCnt;i++){
  27. int temp=A[i];
  28. A[i]=A[len-i-1-k];
  29. A[len-i-1-k]=temp;
  30. }
  31. k++;
  32. //for(int i=0;i<len;i++)
  33. // System.out.print(A[i]+"");
  34. //System.out.print("\n");
  35. flag=false;
  36. for(int i=1;i<len;i++){
  37. if(A[i-1]>A[i]){flag=true;break;}
  38. }
  39. }
  40. return res;
  41. }
  42. }

题解结果:

个人感悟:

没有,就是吐槽这道题的答案太随意了。

【LeetCode】Pancake Sorting(煎饼排序)的更多相关文章

  1. 【LeetCode】969. Pancake Sorting 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟法 日期 题目地址:https://leetco ...

  2. Leetcode 969. 煎饼排序

    969. 煎饼排序  显示英文描述 我的提交返回竞赛   用户通过次数134 用户尝试次数158 通过次数135 提交次数256 题目难度Medium 给定数组 A,我们可以对其进行煎饼翻转:我们选择 ...

  3. Hark的数据结构与算法练习之煎饼排序

    算法说明 假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列.这个排序的过程就是煎饼排序. 这 ...

  4. BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 215[S ...

  5. BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心

    BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...

  6. 【BZOJ 1697】1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大 ...

  7. LeetCode 81——搜索旋转排序数组 II

    1. 题目 2. 解答 2.1. 方法一 基于 LeetCode 33--搜索旋转排序数组 中的方法二. 当 nums[mid] = nums[right] 时,比如 [1, 1, 2, 1, 1], ...

  8. LeetCode:搜索旋转排序数组【33】

    LeetCode:搜索旋转排序数组[33] 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2]  ...

  9. LeetCode969. 煎饼排序

    问题:969. 煎饼排序 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序.我们要执行零次或多次煎饼翻转(按顺序一次接 ...

随机推荐

  1. 操作messageBox类

    我们经常操作messagebox类,有时候我们又分不清一些参数,下面是一些操作messageBox的常用方法: public static class ClsMsg { public static v ...

  2. jq或zp监听input的value改变问题

    $(document).on('input propertychange','#citySelectorValue',function () { alert("s"); } 以上J ...

  3. Gridview基础

    gridview是封装好的,直接在设计界面使用,基本不需要写代码 1.绑定数据源 GridView最好与LinQDatasourse配合使用,相匹配绑定数据: 2.外观控制—— 点开有自动套用格式 布 ...

  4. Tame Your Software Dependencies for More Flexible Apps

    http://msdn.microsoft.com/en-us/magazine/cc337885.aspx

  5. mongodb 原子操作findAndModify

    原子操作模型数据findAndModify 推荐的方法,以保持原子将保留所有的相关信息,这些信息经常更新,一个文档中使用嵌入文档.这将确保所有的更新为一个单一文档是原子. 考虑下面的 products ...

  6. List 集合中数据不重复的使用

    foreach (DataRow dr in dt.Rows) { list.Add(dr["项目组"].ToString()); } list = list.Distinct&l ...

  7. 学习用5W1H来管理自己的项目/工作

    学习用5W1H来管理自己的项目/工作   最近开始需要系统化的思维模型,这只是一个开始,一下用脑图的形式来简介5W1H的具体内容: 先写xmind思维树的文本导出,后面附上图片.^ _ ^ 5W1H ...

  8. 正则表达说明—Pattern API

    字符类 [abc]                              匹配a.b.c任意一个字符 [^abc]   匹配除了a.b.c外的任意一个字符 [a-zA-Z]     匹配a-z或A ...

  9. 系统妈Win10系统64位和32位快速专业版

    win10系统64位快速专业安装版 V2016年 系统妈:http://www.xitongma.com/ Ghost Win10 64位正式装机专业版2016 微软向Windows用户推送了win1 ...

  10. bat 批处理测试局域网速度 两端电脑

    C:\Users\Administrator>iperf3 iperf3: parameter error - must either be a client (-c) or server (- ...