LeetCode581 最短無序連續子陣列

2021-09-24 01:54:32 字數 954 閱讀 4691

給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。

你找到的子陣列應是最短的,請輸出它的長度。

示例 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 進行公升序排序,那麼整個表都會變為公升序排序。說明...