码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode-915-Partition Array into Disjoint Intervals]

时间:2018-10-07 00:41:04      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:tco   一个   NPU   min   pos   input   get   pre   ref   

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.
思路:
从左到右扫描一遍数组,用一个数组记录索引i左边出现的最大值。
然后,从右到左再扫描一遍,用另外一个数组记录索引i右边出现的最小值。
最后,比较两个数组中同一个索引i处左边的最大值与右边的最小值的情况。
int partitionDisjoint(vector<int>& A)
{
    map<int,int>mpMax,mpMin;//对应的索引
    int t = A[0];
    for(int i = 0; i < A.size(); i++)
    {
        t = max(t,A[i]);
        mpMax[i] = t;
    }
    t = A[A.size()-1];
    for(int i = A.size()-1; i >= 1; i--)
    {
        t = min(t,A[i]);
        mpMin[i] = t;
    }

    for(int i = 1; i < A.size(); i++)
    {
        if(mpMax[i-1] <= mpMin[i])return i;
    }

}

 

参考:

[leetcode-915-Partition Array into Disjoint Intervals]

标签:tco   一个   NPU   min   pos   input   get   pre   ref   

原文地址:https://www.cnblogs.com/hellowooorld/p/9749106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!