最短子数组练习题 -- 算法小结
来源:互联网 发布:计算机的发展史知乎 编辑:程序博客网 时间:2024/06/06 06:55
对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。
测试样例:
[1,4,6,5,9,10],6
返回:2
编程思路:找出需要排序的最小子数组,只需要找到需要移动位置的离两边位置最近的元素即可,我们知道离最左边需要移动元素就是第一个比前面最大的的元素小的元素,离最右边需要移动的元素就是比后面最小元素大的元素…..
import java.util.*;public class Subsequence { public int shortestSubsequence(int[] A, int n) { // write code here if(A==null||n<1){ return 0; } int left =0,right = 0,temmax=A[0],temmin=A[n-1]; for(int i=0;i<n-1;i++){ if(A[i+1]>=temmax){ temmax = A[i+1]; //当前左边最大元素 }else{ right = i+1; //若出现当前元素小于当前左边最大元素,则说明当前元素需要移动 } if(A[n-i-2]<=temmin){ temmin = A[n-i-2]; //当前右边最小元素 }else{ left = n-i-2; //若出现当前元素大于当前右边最小元素,则说明当前元素需要移动 } } if(right==left) return 0; return right-left+1; }}
阅读全文
0 0
- 最短子数组练习题 -- 算法小结
- 牛客网 | 最短子数组练习题
- 最短子数组练习题
- 牛客网 | 最短子数组练习题
- 最短子数组练习题
- 有序数组合并 -- 算法小结
- 数据结构与算法分析笔记与总结(java实现)--排序12:最短子数组练习题
- 数组练习题
- 数组练习题
- 数组练习题
- 后缀数组练习题若干
- 数组_练习题
- 后缀数组练习题若干
- 数组基础练习题
- 多维数组练习题
- 数组-《数据结构1000》-练习题
- 数组变树练习题
- 有序数组合并练习题
- 动态配置信息需要提供一个重新缓存的按钮
- 练习
- leetcode.array--16. 3Sum Closest
- 对互联网的几点思考
- 数组
- 最短子数组练习题 -- 算法小结
- 【树莓派】基本操作
- MyEclipse 10 代码提示
- Uva 10888 Warehouse(KM)
- 用随机数选人(几行没有任何技术含量的代码)
- VueJS(2)--创建工程
- BZOJ 1227: [SDOI2009]虔诚的墓主人 树状数组 组合数
- Java SE8 Lambda 基础入门---两个函数式接口:Predicate、Consumer
- Coreldraw修改平面图独到漂亮见解就在这里了