Leetcode 969. 煎饼排序
- 用户通过次数134
 - 用户尝试次数158
 - 通过次数135
 - 提交次数256
 - 题目难度Medium
 
给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。
返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。
示例 1:
输入:[3,2,4,1]
输出:[4,2,4,3]
解释:
我们执行 4 次煎饼翻转,k 值分别为 4,2,4,和 3。
初始状态 A = [3, 2, 4, 1]
第一次翻转后 (k=4): A = [1, 4, 2, 3]
第二次翻转后 (k=2): A = [4, 1, 2, 3]
第三次翻转后 (k=4): A = [3, 2, 1, 4]
第四次翻转后 (k=3): A = [1, 2, 3, 4],此时已完成排序。
示例 2:
输入:[1,2,3]
输出:[]
解释:
输入已经排序,因此不需要翻转任何内容。
请注意,其他可能的答案,如[3,3],也将被接受。
提示:
1 <= A.length <= 100A[i]是[1, 2, ..., A.length]的排列
class Solution {
public:
    int findmax(vector<int> a,int len){
        int maxnum = INT_MIN;
        int xiabiao = -;
        for(int i=;i < len;i++){
            if(a[i] > maxnum){
                maxnum = a[i];
                xiabiao = i;
            }
        }
        return xiabiao;
    }
    void fanzhuan(vector<int>& a,int n){
        for(int i=;i < n/;i++){
            int t = a[i];
            a[i] = a[n-i-];
            a[n-i-] = t;
        }
    }
    vector<int> pancakeSort(vector<int>& A) {
        int lena = A.size();
        vector<int> res;
        for(int i=lena;i > ;i--){
            int pos = findmax(A,i);
            fanzhuan(A,pos+);
            res.push_back(pos+);
            fanzhuan(A,i);
            res.push_back(i);
        }
        return res;
    }
};
这是一个非常有名的问题。原始问题的难点在于怎么用最少的次数排好序,但是此题放宽了要求(翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确),所以我们可以很容易想到的一个方法是:首先找出数组中的最大数,然后将最大数及其之前的全部数进行翻转,例如
Leetcode 969. 煎饼排序的更多相关文章
- LeetCode969. 煎饼排序
		
问题:969. 煎饼排序 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序.我们要执行零次或多次煎饼翻转(按顺序一次接 ...
 - Hark的数据结构与算法练习之煎饼排序
		
算法说明 假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列.这个排序的过程就是煎饼排序. 这 ...
 - LeetCode 80. 删除排序数组中的重复项 II
		
LeetCode 80. 删除排序数组中的重复项 II
 - LeetCode:删除排序链表中的重复元素【83】
		
LeetCode:删除排序链表中的重复元素[83] 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示 ...
 - LeetCode初级算法--排序和搜索01:第一个错误的版本
		
LeetCode初级算法--排序和搜索01:第一个错误的版本 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.cs ...
 - 前端与算法 leetcode 26. 删除排序数组中的重复项
		
目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数 ...
 - 力扣(LeetCode)删除排序链表中的重复元素II 个人题解
		
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...
 - 每天一道面试题LeetCode 80--删除排序数组中的重复项 II(python实现)
		
LeetCode 80--删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输 ...
 - 【LeetCode】Pancake Sorting(煎饼排序)
		
这道题是LeetCode里的第969道题. 题目要求: 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序.我们要执行零 ...
 
随机推荐
- JS 事件绑定、事件监听、事件委托详细介绍
			
原:http://www.jb51.net/article/93752.htm 在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代 ...
 - SAP按销售订单生产和标准结算配置及操作手册
			
SAP按销售订单生产和标准结算配置及操作手册 http://blog.sina.com.cn/s/blog_6787c0b80101a3tl.html SAP按销售订单生产和标准结算配置及操作手册 S ...
 - super()、this属性与static静态方法的执行逻辑
			
1.super的构造顺序:永远优先构造父类的方法 2.static永远在类实例之前执行,this的使用范围为实例之后
 - python基础-PyYaml操作yaml文件
			
yaml语法 格式 它的基本语法规则如下 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 YAML 支持的数据结构有 ...
 - _spellmod_leech_aura
			
comment 备注 aura 光环ID,玩家有这个光环时候造成的伤害会转化成吸血效果 chance 每次伤害转化成吸血效果的几率 type 吸血的类型,数据库枚举类型,可以直接选取 base ...
 - 【ATcoder】D - Half Reflector
			
题目链接:http://agc011.contest.atcoder.jp/tasks/agc011_d 每次都是两道题惨啊.... 想了想大概做法,既然小球走过去就会导致装置变化?那么是不是有一点像 ...
 - Intellij idea 2017 图标含义
			
File Type Icon Recognized in ActionScript files ActionScript files Ultimate Edition Active Server Pa ...
 - oracle的批量操作sql语句
			
1.批量删除/批量更新 mapper: <update id="updatePrjStateByFPrjId" parameterType="string" ...
 - Linux 安装SSH
			
●centOS/redhat安装SSH 查询openssh server服务状态:systemctl status sshd 安装sshd命令: yum install openssh-server ...
 - Jmeter 接口测试知识梳理——持续集成篇
			
Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter + Ant ...