581. 最短无序连续子数组
程序员文章站
2022-03-24 15:29:42
...
题目:
题解:
1. 解释一:
2. 解释二:
3. 解释三:
4. 解释四:
代码:
public class code581 {
public static int findUnsortedSubarray(int[] nums) {
int len = nums.length;
if(len <= 1)
{
return 0;
}
int left = len;
int right = -1;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for(int i = 0; i < len; i++)
{
// 从左到右找出最后一个破坏递增的数
if(nums[i] >= max)
{
max = nums[i];
}
else
{
right = i;
}
// 从右到左找出最后一个破坏递减的数
if(nums[len - i - 1] <= min)
{
min = nums[len - i - 1];
}
else
{
left = len - i - 1;
}
}
if(right > left)
{
return right - left + 1;
}
else // 当给定的数组,默认就是升序的话,则不需要进行调整,子数组长度为 0
{
return 0;
}
}
public static void main(String[] args) {
int nums[] = { 2, 6, 4, 8, 10, 9, 15 };
int res = findUnsortedSubarray(nums);
System.out.println(res);
}
}
参考:
下一篇: JAVA排序算法之基数排序