待排序的最短子数组长度(C++版)
来源:互联网 发布:java集合结构图 编辑:程序博客网 时间:2024/05/16 16:54
题目:
对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。
(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。
思路:
分别从
左->右:记录最大元素值 比较最大元素值和当前遍历元素的大小 如果 最大值 > 当前元素 记录当前元素下标, 直至数组遍历完成。 —— index1
和
右->左:记录最小元素值 比较最小元素值和当前遍历元素的大小 如果 最小值 < 当前元素 记录当前元素下标, 直至数组遍历完成。 —— index2
最后返回 (index1 - index2 + 1)
注释:如果原数组是有序的 那么返回0即可。
贴代码:
int getMin(int a, int b){ return (a < b) ? a : b; } int getMax(int a, int b){ return (a > b) ? a : b; } int shortestSubsequence(vector<int> A, int n) { int L_R_dx = 0, max = A[0];int R_L_dx = 0, min = A[n - 1];for(int i = 1; i < n; ++i){if(max > A[i]){L_R_dx = i;}max = getMax(max, A[i]);}for(int i = n - 2; i >= 0; --i){if(min < A[i]){R_L_dx = i;}min = getMin(min, A[i]);} if (L_R_dx == 0 && R_L_dx == 0){return 0;}else{return (L_R_dx - R_L_dx + 1);} }
0 0
- 待排序的最短子数组长度(C++版)
- 需要排序的最短子数组的长度
- 需要排序的最短子数组的长度
- 需要排序的最短子数组长度
- 需要排序的最短子数组长度
- 需要排序的最短子数组长度
- 需要排序的最短子数组长度
- 数组与矩阵---需要排序的最短子数组长度
- C#数组的最大长度(待研究)
- 求需要排序的最短子数组的长度
- 排序实现对字符串数组的排序,待改进.
- 不同长度的字符串数组排序
- 一维数组的长度和排序
- 长度为7的数组,冒泡排序.
- C语言求其字符数组的长度
- c/c++如何获取数组的长度
- C/C++获取数组的长度
- C语言长度为0的数组
- Ajax基础
- java基础多线程2
- 如何生成mp4文件
- Android SDK 命令开发项目
- Time的hadoop学习笔记之--搭建有三台主机的Hadoop集群
- 待排序的最短子数组长度(C++版)
- ListView的多种布局显示(三)
- Activity.createPendingResult() android组件间通信又一种方式
- C#常量
- iOS开发44-iOS Swift数组
- WAP网站设计规范
- 事件传值及ComboBox遍历控件
- DB2 手动修改索引统计信息时: SQL1227N Reason Code = "8"
- R语言学习笔记之<进度条>