LeetCode 969. 煎饼排序
题目描述
给你一个整数数组 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. 煎饼排序相关推荐
- LeetCode第969题 煎饼排序
LeetCode第969题 煎饼排序 题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr. ...
- C++ pancake sort煎饼排序的实现算法(附完整源码)
C++pancake sort煎饼排序的实现算法 C++pancake sort煎饼排序的实现算法完整源码(定义,实现,main函数测试) C++pancake sort煎饼排序的实现算法完整源码(定 ...
- C语言煎饼排序Pancake sort算法(附完整源码)
煎饼排序Pancake sort算法 煎饼排序Pancake sort算法的完整源码(定义,实现,main函数测试) 煎饼排序Pancake sort算法的完整源码(定义,实现,main函数测试) # ...
- LeetCode 280. 摆动排序
文章目录 1. 题目 2. 解题 1. 题目 给你一个无序的数组 nums, 将该数字 原地 重排后使得 nums[0] <= nums[1] >= nums[2] <= nums[ ...
- C++描述 LeetCode 26. 删除排序数组中的重复项
C++描述 LeetCode 26. 删除排序数组中的重复项 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...
- leetcode-969:煎饼排序
leetcode-969:煎饼排序 题目 解题 方法一: 题目 题目链接 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 < ...
- Python:实现pancake sort煎饼排序算法(附完整源码)
Python:实现pancake sort煎饼排序算法 def pancake_sort(arr):cur = len(arr)while cur > 1:# Find the maximum ...
- LeetCode中等题之煎饼排序
题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子数组 arr[0- ...
- leetcode算法题--煎饼排序
原题链接:https://leetcode-cn.com/problems/pancake-sorting/ 算法思路: 1.在未排序的数中找出最大的一个数 2.两次排序,将这个数放在最后,这是已经排 ...
最新文章
- 白帽子讲Web安全(纪念版)
- 什么样的网页百度爱收录?
- Windows下通过VNC远程访问Linux服务器,并实现可视化
- js操作改变原数组的解决方法
- 循环——批量处理数据
- 华为在爱尔兰增设150个LTE研发职位
- selenium firefox驱动_Python3+selenium配置常见报错解决方案
- IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)...
- SQLServer To MySQL 解决方案
- virtualbox 安装增强功能报错
- 计算机文化基础清华大学PPT,数据库基础知识清华大学计算机文化基础.ppt
- 传智黑马java基础学习——day14
- 爬网易云音乐动态的坑
- 双月数据生成及其常见算法(一)
- easyswoole消息队列
- 在痛苦的日子里笑出声来
- linux 添加快捷命令,linux 添加快捷指令
- 怀旧服一区和五区服务器位置,魔兽怀旧服战场分组怎么看?怀旧服战场分组一区五区怎么分的?...
- nginx利用ngx_http_geoip2_module模块对国外ip限制
- 【单片机毕业设计】【mcuclub-jj-026】基于单片机的垃圾桶的设计
热门文章
- Three.js - RectAreaLight 光源
- js获取文本框的值在控制台输出
- 对比Excel学openpyxl系列之单元格选择与字体设置
- C语言结构体和结构体排序
- LeCun狂赞:600刀GPT-3.5平替! 斯坦福70亿参数「羊驼」爆火,LLaMA杀疯了
- 关于excel的导入与导出
- 修改live mail路径
- StarRocks 2.0,新一年,新启航,新极速
- 微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
- 详解C#实例化对象的三种方式及性能对比