題目:給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。
示例 1:1、陣列 temp 為 nums 複製而來,然後對 temp 從小到大進行排序;輸入: [2, 6, 4, 8, 10, 9, 15]
輸出: 5
解釋: 你只需要對 [6, 4, 8, 10, 9] 進行公升序排序,那麼整個表都會變為公升序排序。
說明 :
輸入的陣列長度範圍在 [1, 10,000]。
輸入的陣列可能包含重複元素 ,所以公升序的意思是<=。
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 進行公升序排序,那麼整個表都會變為公升序排序。說明...