leetCode 第581題 最短無序連續子陣列

2021-09-25 03:05:19 字數 1057 閱讀 2908

題目:給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。

示例 1:

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

輸出: 5

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

說明 :

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

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

1、陣列 temp 為 nums 複製而來,然後對 temp 從小到大進行排序;

2、然後利用雙指標, 乙個從頭, 乙個從尾, 向中間靠攏; 如果相等, 就 ++ 或者 --; 如果 left 和 right 指標指向的數值都不相等, 就 break;

3、需要排序的大小就為 [left , right] ,大小為:right - left + 1。

public class findunsortedsubarray_581 

int temp = nums.clone();

// 將temp陣列從小到大排序

arrays.sort(temp);

// 雙指標:乙個指向頭,乙個指向尾

int left = 0;

int right = nums.length - 1;

while(left < right)

if(nums[right] == temp[right])

// 兩個指標指向的位置都不相等時,flag才會為true,則 break

if(flag == true)

}return left >= right ? 0 : right - left + 1;

}public static void main(string args) ;

system.out.println(findunsortedsubarray(arr)); // 4

}}

Leetcode刷題 581 最短無連續子陣列

給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 輸入 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 進行公升序排序,那麼整個表都會變為公升序排序。說明...

leetcode 581 最短無序連續子陣列

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