LeetCode581 最短無序連續子串行

2021-10-06 05:27:08 字數 1121 閱讀 6178

題目:

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

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

示例 1:

輸入: [2, 6, 4, 8, 10, 9, 15]

輸出: 5

解釋: 你只需要對 [6, 4, 8, 10, 9] 進行公升序排序,那麼整個表都會變為公升序排序。

說明 :

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

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

思路:

1.暴力求解,找到每個下標i到j**現的逆序對,並且儲存最左和最右的邊界元素。

2.對原始陣列進行排序後從兩端開始找不同的元素即可。

3.找出逆序對中最小和最大的元素,然後找它們對應的正確位置,就可以鎖定區間。

**:

class solution 

}} return r < 0 ? 0 : r - l + 1;

}};/*class solution

} for (int i = len - 1; i >= 0; i--)

}if (right == left) return 0;

else return right - left + 1;

}};*/class solution

if (flag)

left = min(left, nums[i+1]);

} flag = false;

for (int i = len - 1; i >= 1; i--)

if (flag)

right = max(right, nums[i - 1]);

} /*if (right < 0)

return 0;*/

int l, r ;

for (l = 0; l < len; l++)

}for (r = len - 1; r>= 0; r--)

}return r - l < 0 ? 0 : r - l + 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 進行公升序排序,那麼整個表都會變為公升序排序。說明...