zoukankan      html  css  js  c++  java
  • 【leetcode】915. Partition Array into Disjoint Intervals

    题目如下:

    解题思路:题目要求的是在数组中找到一个下标最小的index,使得index左边(包括自己)子序列的最大值小于或者等于右边序列的最小值。那么我们可以先把数组从最左边开始到数组最右边所有子序列的最大值都求出来存入leftMax数组,同时也把从数组最右边开始到最左边的所有子序列的最小值求出来存入rightMin数组,最后找出最小的i使得leftMax[i] <= rightMin[i+1]即可。

    代码如下:

    class Solution(object):
        def partitionDisjoint(self, A):
            """
            :type A: List[int]
            :rtype: int
            """
            leftMax = [0] * len(A)
            rightMin = [0] * len(A)
            for i in range(len(A)):
                if i == 0:
                    leftMax[i] = A[i]
                else:
                    leftMax[i] = max(leftMax[i-1],A[i])
    
            for i in range(-1,-len(A)-1,-1):
                if i == -1:
                    rightMin[i] = A[i]
                else:
                    rightMin[i] = min(rightMin[i + 1], A[i])
    
            #print leftMax,rightMin
            res = 0
            for i in range(len(leftMax)-1):
                if leftMax[i] <= rightMin[i+1]:
                    res = i
                    break
    
            return res + 1
  • 相关阅读:
    thinkphp SAE
    thinkphp rpc
    thinkphp REST
    thinkphp 图形处理
    thinkphp 验证码
    thinkphp 文件上传
    thinkphp 数据分页
    thinkphp 多语言支持
    thinkphp cookie支持
    thinkphp session支持
  • 原文地址:https://www.cnblogs.com/seyjs/p/9737223.html
Copyright © 2011-2022 走看看