LeetCode中等题之煎饼排序

news/2024/11/20 19:40:25/

题目

给你一个整数数组 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

在这里插入图片描述


http://www.ppmy.cn/news/605629.html

相关文章

打标遗留的问题

电子病历训练文本打标的更正 $ 符号 [ 符号 Address -ate 打标数据转换成一列的时候会出现这种字符紧紧挨着没分开的情况

LeetCode简单题之比较含退格的字符串

题目 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s “ab#c”, …

前端模块化(CommenJS规范、ES6规范)

目录1. 简介2. CommonJS规范3. ES6模块化规范写法一写法二&#xff08;推荐&#xff09;1. 简介 随着网站逐渐变成”互联网应用程序”&#xff0c;嵌入网页的Javascript代码越来越庞大&#xff0c;越来越复杂。 Javascript模块化编程&#xff0c;已经成为一个迫切的需求。理想…

差值结构的基态和跃迁

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让差值结构中有6个1, 行分布是0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;2列分布是4&#xff0c;2. 得到数据 差值结构 A-B 迭代次数 共…

pytorch 与 numpy 的数组广播机制

20210505 从左边开始对应位置,如果一个是1,一个大于1&#xff0c;以大于1的为准, 不能对应位置的值不相同 缺失的维度:其中一个矩阵少某个或某些维度

LeetCode简单题之数组序号转换

题目 给你一个整数数组 arr &#xff0c;请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下&#xff1a; 序号从 1 开始编号。 一个元素越大&#xff0c;那么序号越大。如果两个元素相等&#xff0c;那么它们的序号相同。 每个数…

Webpack快速入门

目录一. 什么是Webpack二. Webpack安装三. 案例&#xff1a;JS打包1. 创建nodejs项目2. 编写js文件3. 编写webpack.config.js4. 打包四. 案例&#xff1a;JS合并CSS1. 安装style-loader和css-loader2. 修改webpack.config.js3. 编写css文件4. 修改main.js5、打包6、打开浏览器测…