ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode 969. Pancake Sorting

2019-07-10 10:03:49  阅读:345  来源: 互联网

标签:begin Sorting 最大数 int vector Pancake ans 逆转 LeetCode


题目描述: https://leetcode.com/problems/pancake-sorting/

 1 class Solution {
 2 public:
 3     vector<int> pancakeSort(vector<int>& A) {
 4         // 思路:A中的元素为[1,2,3...,n]的置换,我们知道排序后的最大数为n。从最大数开始,
 5         // 找到他的正确位置: 先找到他的当前位置k,逆转数组的前k个数,n此时位于数组头部,
 6         // 然后逆转数组的前n个数,使得n到无序区的尾部。n-1同理。最多需要逆转2*n-3次。
 7         vector<int> ans;
 8         int n=A.size();
 9         for(int i=n-1; i>0; --i){
10             // A中的元素为[1,2,3...,n]的置换,所以排序后A[i]上的数应为i+1
11             if(A[i] != i+1){
12                 int k;
13                 for(k=0; k<i; ++k)
14                     if(A[k] == i+1)
15                         break;
16                 // 不在头部,逆转到头部
17                 if(k > 0) {
18                     reverse(A.begin(), A.begin()+k+1);
19                     ans.push_back(k+1);
20                 }
21                 // 将位于头部的数 i+1 逆转到位置 i
22                 reverse(A.begin(), A.begin()+i+1);
23                 ans.push_back(i+1);
24             }
25         }
26         return ans;
27     }
28 };

 

标签:begin,Sorting,最大数,int,vector,Pancake,ans,逆转,LeetCode
来源: https://www.cnblogs.com/sclczk/p/11161993.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有