給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。
你找到的子陣列應是最短的,請輸出它的長度。
示例 1:
輸入:[2, 6, 4, 8, 10, 9, 15]輸出:5解釋:你只需要對 [6, 4, 8, 10, 9] 進行公升序排序,那麼整個表都會變為公升序排序。說明 :
輸入的陣列長度範圍在 [1, 10,000]。
輸入的陣列可能包含重複元素 ,所以公升序的意思是<=。
解析:
第乙個簡單的思路是將原陣列拷貝乙份,並進行排序。從左往右從右往左分別比較兩個陣列不同的位置l和r,這兩個下標之間的位置就是最短長度。
第二種方法就是,用max記錄前面的最大值,如果乙個後面的值小於前面的最大值,則記錄下該位置l;用min記錄後面的最小值,如果前面的值大於後面的最小值,則記錄下該位置r,這兩個下標之間的位置就是最短長度。
**:
int findunsortedsubarray(vector& nums)
}if(first==last)//如果是同乙個位置,則表示整個陣列是有序的!!!
return 0;
return last-first+1;
}
他山之石:
int findunsortedsubarray(vector& nums)
return left-right+1;
}
leetcode 581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...
leetcode 581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...
LeetCode581 最短無序連續子陣列
給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明...