zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)

    581. 最短无序连续子数组

    给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

    你找到的子数组应是最短的,请输出它的长度。

    示例 1:

    输入: [2, 6, 4, 8, 10, 9, 15]
    输出: 5
    解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
    说明 :

    输入的数组长度范围在 [1, 10,000]。
    输入的数组可能包含重复元素 ,所以升序的意思是<=。

    class Solution {
         public int findUnsortedSubarray(int[] nums) {
            if(nums.length == 0 || nums.length == 1 || nums == null) {
                return 0;
            }
            int len = nums.length;
            int temp=0;
            int left  = -1, right = -1;
            int max = nums[0], min = nums[len - 1];
            for(int i = 1; i < len; i++) { 
                if (max > nums[i]) {
                    right = i;
                } else {
                    max = nums[i];
                }
                temp= len - i - 1;
                if (min < nums[temp]) {
                    left = temp;
                } else {
                    min = nums[temp];
                }
            }
            return right > left ? right - left + 1 : 0;
        }
     
    }
    
  • 相关阅读:
    第63天python学习异常
    第62天python 学习TCP三次握手四次挥手详解
    文件操作
    内置函数
    函数递归
    函数补充
    函数
    购物车程序作业
    集合内置函数
    字典三级菜单
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074912.html
Copyright © 2011-2022 走看看