题目描述

给你一个整数数组 arr ,请使用煎饼翻转完成对数组的排序。

一次煎饼翻转的执行过程如下:

  • 选择一个整数 k ,1 <= k <= arr.length
  • 反转子数组 arr[0…k-1](下标从 0 开始)

例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。

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

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

输入:[1,2,3]
输出:[]
解释:
输入已经排序,因此不需要翻转任何内容。
请注意,其他可能的答案,如 [3,3] ,也将被判断为正确。

题目分析

利用排序原理,先检索出数组最大值,从其下标处反转,再将整个数组反转,使其到达数组末端,完成一次排序过程。再检索下一个最大值,重复步骤,直至排序完成。

代码

         var pancakeSort = function(arr) {//声明变量var newarr = new Array();for (var j = arr.length; j > 0; j--) {//循环到当前最大数for (var i = 0; arr[i] != j; i++);//反转最大数到开头reversalarr(arr, 0, i);//添加反转数值,下标从0开始,此处+1if (i != 0)newarr.push(i + 1);//将最大数反转到结尾reversalarr(arr, 0, j - 1);// 添加反转数值newarr.push(j)}return newarr;};//自定义反转函数方法var reversalarr = function(a, left, right) {while (left < right) {var newnum = a[left];a[left] = a[right];a[right] = newnum;left++;right--;}};

LeetCode 969. 煎饼排序相关推荐

  1. LeetCode第969题 煎饼排序

    LeetCode第969题 煎饼排序 题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr. ...

  2. C++ pancake sort煎饼排序的实现算法(附完整源码)

    C++pancake sort煎饼排序的实现算法 C++pancake sort煎饼排序的实现算法完整源码(定义,实现,main函数测试) C++pancake sort煎饼排序的实现算法完整源码(定 ...

  3. C语言煎饼排序Pancake sort算法(附完整源码)

    煎饼排序Pancake sort算法 煎饼排序Pancake sort算法的完整源码(定义,实现,main函数测试) 煎饼排序Pancake sort算法的完整源码(定义,实现,main函数测试) # ...

  4. LeetCode 280. 摆动排序

    文章目录 1. 题目 2. 解题 1. 题目 给你一个无序的数组 nums, 将该数字 原地 重排后使得 nums[0] <= nums[1] >= nums[2] <= nums[ ...

  5. C++描述 LeetCode 26. 删除排序数组中的重复项

    C++描述 LeetCode 26. 删除排序数组中的重复项   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...

  6. leetcode-969:煎饼排序

    leetcode-969:煎饼排序 题目 解题 方法一: 题目 题目链接 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 < ...

  7. Python:实现pancake sort煎饼排序算法(附完整源码)

    Python:实现pancake sort煎饼排序算法 def pancake_sort(arr):cur = len(arr)while cur > 1:# Find the maximum ...

  8. LeetCode中等题之煎饼排序

    题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子数组 arr[0- ...

  9. leetcode算法题--煎饼排序

    原题链接:https://leetcode-cn.com/problems/pancake-sorting/ 算法思路: 1.在未排序的数中找出最大的一个数 2.两次排序,将这个数放在最后,这是已经排 ...

最新文章

  1. 白帽子讲Web安全(纪念版)
  2. 什么样的网页百度爱收录?
  3. Windows下通过VNC远程访问Linux服务器,并实现可视化
  4. js操作改变原数组的解决方法
  5. 循环——批量处理数据
  6. 华为在爱尔兰增设150个LTE研发职位
  7. selenium firefox驱动_Python3+selenium配置常见报错解决方案
  8. IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)...
  9. SQLServer To MySQL 解决方案
  10. virtualbox 安装增强功能报错
  11. 计算机文化基础清华大学PPT,数据库基础知识清华大学计算机文化基础.ppt
  12. 传智黑马java基础学习——day14
  13. 爬网易云音乐动态的坑
  14. 双月数据生成及其常见算法(一)
  15. easyswoole消息队列
  16. 在痛苦的日子里笑出声来
  17. linux 添加快捷命令,linux 添加快捷指令
  18. 怀旧服一区和五区服务器位置,魔兽怀旧服战场分组怎么看?怀旧服战场分组一区五区怎么分的?...
  19. nginx利用ngx_http_geoip2_module模块对国外ip限制
  20. 【单片机毕业设计】【mcuclub-jj-026】基于单片机的垃圾桶的设计

热门文章

  1. Three.js - RectAreaLight 光源
  2. js获取文本框的值在控制台输出
  3. 对比Excel学openpyxl系列之单元格选择与字体设置
  4. C语言结构体和结构体排序
  5. LeCun狂赞:600刀GPT-3.5平替! 斯坦福70亿参数「羊驼」爆火,LLaMA杀疯了
  6. 关于excel的导入与导出
  7. 修改live mail路径
  8. StarRocks 2.0,新一年,新启航,新极速
  9. 微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
  10. 详解C#实例化对象的三种方式及性能对比