581 最短無序連續子陣列 簡單

2022-01-18 09:54:09 字數 1458 閱讀 5354

題目**於力扣(leetcode)

目錄581. 最短無序連續子陣列

注意:

輸入的陣列長度範圍在 [1, 10,000]。

輸入的陣列可能包含重複元素 ,所以公升序的意思是<=。

遍歷兩次 nums 陣列

第一遍正序,遍歷時,通過變數 high 記錄下陣列最後的一位小於前面一位元素的元素所在索引(即導致陣列非遞增,直接影響陣列排序)

再一遍倒序,遍歷時,通過變數 low 記錄下陣列最後的一位大於後面一位元素的元素所在索引(即導致陣列非遞增,直接影響陣列排序)

結果 = high - low + 1 的長度

public static int findunsortedsubarray(int nums) 

// 變數 low 記錄最前的一位小於後面元素的數字所在的索引位

int low = -1;

// 變數 high 記錄最後的一位大於前面元素的數字所在的索引位

int high = -1;

// 令左側最大值為陣列第一位

int leftmax = nums[0];

// 令右側最小值為陣列最後一位

int rightmin = nums[nums.length - 1];

// 從前往後遍歷,找到破壞排序的最後一位

for (int i = 1; i < nums.length; i++) else

}// high 的值未更改時,陣列是非遞減排序

if (high == -1)

// 從後往前遍歷,找到破壞排序的較大數

for (int i = nums.length - 2; i >= 0; i--) else

}// 兩個破壞排序的索引 + 1 = 序列的長度

581 最短無序連續子陣列

給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。複製陣列,對該陣列排序,然後和原陣列相比較,得到兩頭第乙個不一樣元素的位置,這個區間的長度即為返回值。這種方式的負責度是 o 排序的複雜度 o n ...

581 最短無序連續子陣列

給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。輸入的陣列長度...

581 最短無序連續子陣列

581.最短無序連續子陣列 關鍵字 逆序數,單調棧 給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9...