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

    1. Question:

    915. Partition Array into Disjoint Intervals

    https://leetcode.com/problems/partition-array-into-disjoint-intervals/

    Given an array A, partition it into two (contiguous) subarrays left and right so that:

    • Every element in left is less than or equal to every element in right.
    • left and right are non-empty.
    • left has the smallest possible size.

    Return the length of left after such a partitioning.  It is guaranteed that such a partitioning exists.

    Example 1:

    Input: [5,0,3,8,6]
    Output: 3
    Explanation: left = [5,0,3], right = [8,6]
    

    Example 2:

    Input: [1,1,1,0,6,12]
    Output: 4
    Explanation: left = [1,1,1,0], right = [6,12]
    

    Note:

    1. 2 <= A.length <= 30000
    2. 0 <= A[i] <= 10^6
    3. It is guaranteed there is at least one way to partition A as described.

    2. Solution:

    class Solution:
        def partitionDisjoint(self, A):
            """
            :type A: List[int]
            :rtype: int
            """
            size = len(A)
            right_min = [A[-1] for v in range(size)]
            min_value = A[-1]
            for i in range(size - 1, -1, -1):
                min_value = min(min_value, A[i])
                right_min[i] = min_value
    
            left_max = A[0]
            for i in range(size - 1):
                left_max = max(left_max, A[i])
                if left_max <= right_min[i + 1]:
                    return i + 1

    3. Complexity Analysis

    Time Complexity : O(N)

    Space Complexity: O(N)

  • 相关阅读:
    django-rest-framework 注意事项
    Python virtualenv 使用总结篇
    python flask 基础入门
    python property
    python Numpy
    c语言学习的第四天2
    c语言学习第四天数据类型1
    学习c编程的第三天
    学习c编程的第二天
    HTTP首部及各状态码
  • 原文地址:https://www.cnblogs.com/ordili/p/10004345.html
Copyright © 2011-2022 走看看