最小调整有序
2016-06-15 10:19
239 查看
题目描述
有一个整数数组,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,也就是说,找出符合条件的最短序列。给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的起点和终点。(原序列位置从0开始标号,若原序列有序,返回[0,0])。保证A中元素均为正整数。
测试样例:
[1,4,6,5,9,10],6
返回:[2,3]
代码
class Rearrange { public: vector<int> findSegment(vector<int> A, int n) { // write code here vector<int> result; int size = A.size(); if(size == 0 || n <= 0){ return result; }//if int M = 0,N = 0; int max = A[0]; // 计算[M,N]中的N // 如果当前元素小于之前的最大元素则说明当前元素应处于[M N]无序序列中 // 而且当前元素是当前最大下标的无序元素所以更新N为当前元素下标 for(int i = 1;i < n;++i) { if (A[i] >= max){ max = A[i]; }//if else{ N = i; }//else }//for int min = A[n-1]; // 计算[M,N]中的M // 如果当前元素大于之前的最小元素则说明当前元素应处于[M N]无序序列中 // 而且当前元素是当前最小下标的无序元素所以更新M为当前元素下标 for(int i = n - 2;i >= 0;--i) { if(A[i] <= min){ min = A[i]; }//if else{ M = i; }//else }//for result.push_back(M); result.push_back(N); return result; } };
相关文章推荐
- getParameter跟getAttribute的区别
- oracle 12c Enterprise Manager Database Express
- Java中如何遍历Map对象的4种方法
- 解构C#游戏框架uFrame兼谈游戏架构设计
- Markdown语法
- 十六进制 八进制
- android应用程序的安装方式与原理(转载)
- Android做检测版本更新安装完以后就什么都没有了,没有出现安装成功的界面
- com.alibaba.fastjson.JSONException: not close json text, token : error
- HTTP错误404.3-Not Found
- Linux正则表达式
- spring mvc 静态资源配置
- 画空心圆
- jpa常遇到的异常说明
- navicat远程连接报 access denied for user'root'@'your mysql server ip'(using pasword:yes" 错误
- iOS plist文件转换为NSMutableArray
- Android Studio 使用教程2
- 根据当前日期获取本周日期
- 支持向量机SVM原理篇
- [bug] 未能加载文件或程序集“SIPEPS, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。