最短无序连续子数组
题目:
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。示例:
你找到的子数组应是最短的,请输出它的长度。
输入: [2, 6, 4, 8, 10, 9, 15]解题方法:
输出: 5
解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
输入的数组长度范围在 [1, 10,000]。
输入的数组可能包含重复元素 ,所以升序的意思是<=。
【最短无序连续子数组】本题在leetcode上面有不少解题方法,但是我只会用一些笨方法,这道题我的解题思路:
代码和结果:
- 复制输入数组nums,并排序得到tmps;
- 从数组左边开始遍历,找到第一个tmps[i]!=nums[i],记录index1;
- 从数组右边开始遍历,找到第一个tmp[i]!=nums[i],记录index2;
- 最后就是记录index2-index+1,需要注意的是如果数组原本就是升序的,那就不需要排序了。
class Solution {
public:
int findUnsortedSubarray(vector& nums) {
vector tmps=nums;
sort(tmps.begin(),tmps.end());
int start=0;
int end=nums.size()-1;
while(start=0)
{
if(nums[end]==tmps[end])
end--;
else
break;
}return (end-start+1)>0?(end-start+1):0;
}
};
运行结果:
![最短无序连续子数组](https://img.it610.com/image/info10/2334598ead8540ff92ccddb9add84244.jpg)
文章图片
原题链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/
推荐阅读
- android防止连续点击的简单实现(kotlin)
- 谭木匠连续举办三届木艺展|谭木匠连续举办三届木艺展 中外大师作品走进南艺校园
- 投石机可连续抛射石头【Algodoo|投石机可连续抛射石头【Algodoo | 物理模拟】
- html5|各行业工资单出炉 IT类连续多年霸占“榜首”位置
- 第五回(拜师(2))
- CSS兼容性笔记
- 最短且最痛心的恋爱
- 凛冬将至,保健品行业无序发展的时代结束,重新找回失去的亲情
- 连续两次一轮游!国乒重点培养对象陷入危机,一顽疾成前进阻碍!
- 自然写意