Leetcode581.Shortest Unsorted Continuous Subarray最短無序連續子陣列
阿新 • • 發佈:2018-11-06
給定一個整數陣列,你需要尋找一個連續的子陣列,如果對這個子陣列進行升序排序,那麼整個陣列都會變為升序排序。
你找到的子陣列應是最短的,請輸出它的長度。
示例 1:
輸入: [2, 6, 4, 8, 10, 9, 15] 輸出: 5 解釋: 你只需要對 [6, 4, 8, 10, 9] 進行升序排序,那麼整個表都會變為升序排序。
說明 :
- 輸入的陣列長度範圍在 [1, 10,000]。
- 輸入的陣列可能包含重複元素 ,所以升序的意思是<=。
class Solution { public: int findUnsortedSubarray(vector<int>& nums) { int len = nums.size(); if(len <= 1) return 0; vector<int> temp = nums; sort(temp.begin(), temp.end()); int p1 = 0, p2 = len - 1; for(int i = 0; i < len; i++) { if(nums[i] != temp[p1]) break; p1++; } for(int i = len - 1; i >= 0; i--) { if(nums[i] != temp[p2]) break; p2--; } return p2 - p1 <= 0? 0 : p2 - p1 + 1; /* vector<int> res; for(int i = p1; i <= p2; i++) { res.push_back(nums[i]); } return res; */ } };