【每日一题】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; } };
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

浙公网安备 33010602011771号