题目

给你一个整数数组 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 范围内的有效答案都将被判断为正确。
示例 1:
输入:[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],此时已完成排序。
示例 2:
输入:[1,2,3]
输出:[]
解释:
输入已经排序,因此不需要翻转任何内容。
请注意,其他可能的答案,如 [3,3] ,也将被判断为正确。
提示:
1 <= arr.length <= 100
1 <= arr[i] <= arr.length
arr 中的所有整数互不相同(即,arr 是从 1 到 arr.length 整数的一个排列)
来源:力扣(LeetCode)

解题思路

  这个题有点魔方还原的味道,都是有固定套路的。题目给定的操作是旋转前面的元素,也就是如果我们一个一个元素排序的话,先排好的一定是在尾巴,因为前面的元素要频繁变动,排序时,先将最大的元素放在头部然后再调到尾部,一旦我们将最大的元素放在尾巴,那么我们将会得到一个短一个元素的待处理数组,这样我们就可以以同样的操作处理短一些的数组。

class Solution:def pancakeSort(self, arr: List[int]) -> List[int]:A=sorted(arr)  #目标def Reverse(index):  #旋转前k个字符for i in range((index+1)//2):temp=arr[i]arr[i]=arr[index-i]arr[index-i]=temptemp=[]  #记录旋转的尾巴下标i=len(arr) while A!=arr: #检查是否符合条件index=arr.index(max(arr[0:i]))  #找出最大的元素temp.append(index+1)  Reverse(index)  #先放到头部arr[0:i]=arr[0:i][::-1]  #然后调到尾部temp.append(i)i-=1return temp

LeetCode中等题之煎饼排序相关推荐

  1. LeetCode中等题之在排序数组中查找元素的第一个和最后一个位置

    题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以 ...

  2. LeetCode中等题之TinyURL 的加密与解密

    题目 TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL h ...

  3. LeetCode中等题之根据字符出现频率排序

    题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't' ...

  4. LeetCode中等题之特殊等价字符串组

    题目 给你一个字符串数组 words. 一步操作中,你可以交换字符串 words[i] 的任意两个偶数下标对应的字符或任意两个奇数下标对应的字符. 对两个字符串 words[i] 和 words[j] ...

  5. LeetCode中等题之区域和检索 - 数组可修改

    题目 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nu ...

  6. LeetCode中等题之二倍数对数组

    题目 给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 ...

  7. LeetCode中等题之简易银行系统

    题目 你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款).银行共有 n 个账户,编号从 1 到 n .每个账号的初始余额存储在一个下标从 0 开始的整数数组 b ...

  8. LeetCode中等题之最优除法

    题目 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你需要找出怎么添加括 ...

  9. LeetCode中等题之删除链表的中间节点

    题目 给你一个链表的头节点 head .删除 链表的 中间节点 ,并返回修改后的链表的头节点 head . 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊ ...

最新文章

  1. win10+python3.6+tensorflow-cpu+keras+Pycharm环境下的tensorflow配置方法
  2. 基于flink+clickhouse构建亿级电商全端用户画像平台训练营
  3. 风起云涌时,亦是光芒四射时 | LiveVideoStackCon 2020线上峰会日程全公开
  4. 道java_请问这道java里的这几个语句是什么意思
  5. hive中的单分区与多分区在hadoop上的对应关系
  6. JS实现逼真的雪花飘落特效
  7. mysql命令参数_MySQL命令行参数完整版
  8. error: undefined reference to `_imp__glXXX@XX'
  9. 利用Delphi编写Socket通信程序
  10. 计算机辅助建筑制图规范,房屋建筑制图统一标准 [附条文说明] GB/T50001-2017
  11. 聊聊我对写好程序的认识
  12. python长度单位换算表_长度单位换算表大全
  13. 快手小筷子机器人_快手小快机器人设置 苹果手机小快机器人怎么弄
  14. 区块链可以减少社会不平等吗?
  15. django arya插件对数据库操作使用,reverse发娘解析url的使用
  16. npm引入小程序官方WeUI组件库weui-miniprogram
  17. 威尔逊定理证明——杨子曰数学
  18. 如何画双层pcb板_双层pcb板布线规则(操作技巧与案例分析)
  19. led护眼台灯对眼睛好?过来人说说led护眼灯是否真的能护眼
  20. 【Mysql】SQL语句学习

热门文章

  1. 设置腾讯云linux服务器中 MySQL 允许远程访问
  2. LeetCode简单题之二分查找
  3. 云端智能芯片GPGPU与编译器
  4. TVM Reduction降低算力
  5. 2021年大数据Spark(一):框架概述
  6. mysql外键写了会怎么样_mysql使用外键会影响性能吗
  7. python 判断字符串是否以数字结尾
  8. Error:(39, 13) Failed to resolve: com.android.support:appcompat-v7:26.0.0 [duplicate]
  9. 024_Word知识汇总
  10. #includebits/stdc++.h包含C++的所有头文件