【每日一题】581. 最短无序连续子数组

题干:

给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

你找到的子数组应是最短的,请输出它的长度。

示例 1:

输入: [2, 6, 4, 8, 10, 9, 15]
输出: 5
解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。








思路:先建立 vector,将数据拷贝一份,然后排序,跟原数组前后历遍,找到不同的元素就记录下标退出。
class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
       vector<int>s;
       int s1 = 0,s2 = 0,flag = 0;
       for(int j = 0;j < nums.size();j++){
           s.push_back(nums[j]);
       }
       sort(s.begin(),s.end());//排序
       for(int i = 0;i < nums.size();i++){
           if(s[i] != nums[i]){
               s1 = i;
               break;
           }
       }
       for(int i = nums.size() - 1;i >= 0;i--){
           if(s[i] != nums[i]){
               s2 = i;
               s2 += 1;
               break;
           }
       }
       return s2 - s1;
    }
};

 

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @ 2020-08-19 13:59  比尔的歌  阅读(108)  评论(0)    收藏  举报