zoukankan      html  css  js  c++  java
  • 最短无序连续子数组

    题目:

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

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

    示例 1:

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

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

    解题思路:

    从左到右循环,记录最大值为 max,若 nums[i] < max, 则表明位置 i 需要调整, 循环结束,记录需要调整的最大位置 i 为 high;

    同理,从右到左循环,记录最小值为 min, 若 nums[i] > min, 则表明位置 i 需要调整,循环结束,记录需要调整的最小位置 i 为 low.

    //go
    func findUnsortedSubarray(nums []int) int {
        length := len(nums)
        if length < 2 {
            return 0
        }
        high, low, max, min := 0, length-1, nums[0], nums[length-1]
        for i:=1; i < length; i++{
            max = fmax(max, nums[i])
            min = fmin(min, nums[length-1-i])
            if nums[i] < max {
                high = i
            }
            if nums[length-1-i] > min {
                low = length-1-i  
            }
        }
        if high > low {
            return high-low+1
        }
        return 0
    }
    
    func fmax(x, y int) int {
        if x > y {
            return x
        }
        return y
    }
    
    func fmin(x, y int) int {
        if x < y {
            return x
        }
        return y
    }
    

      地址:https://mp.weixin.qq.com/s/xSx9O3aRLIb6g-HEd6dUvA

  • 相关阅读:
    MVC模式在Java Web应用程序中的实例分析
    MVC模式在Java Web应用程序中的实现
    设计模式简析
    《大型网站技术架构:核心原理与技术分析》5,6,7章简析
    spring引入HikariCP连接池
    sring引入mybatis
    spring中通过JNDI、DBCP、C3P0配置数据源
    springMVC框架搭建
    Timer定时执行
    SQL大杂烩
  • 原文地址:https://www.cnblogs.com/smallleiit/p/13336192.html
Copyright © 2011-2022 走看看