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