915.partitionDisjoint.py

Question

Given an integer array nums, 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.

Test cases are generated such that partitioning exists.

 

Example 1:

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

Example 2:

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

 

Constraints:

  • 2 <= nums.length <= 105
  • 0 <= nums[i] <= 106
  • There is at least one valid answer for the given input.

Answer

  • class Solution(object):
        def partitionDisjoint(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
        l=0
        left_max=max_all=nums[0]
        n=len(nums)
        #print("n:",n)
        for i in range(1,n):
        #    print("i:",i)
            max_all=max(left_max,nums[i])
            if nums[i] <left_max:
                l = i
                left_max=max_all
        return l+1

     

posted on 2021-07-31 11:40  guolongnv  阅读(21)  评论(0编辑  收藏  举报