LeetCode 915 分割数组[数组 双指针] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 915 分割数组[数组 双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
在这个特殊的意义刷一道中等题真的幸福度拉满,这道题的本意就是求一个尽可能小的界限,界限左边的数都比右边的数小,那么我们可以定义双指针,左指针为了定界,右指针就不断向右找,用一个变量存储当前左区间最大的数,一旦发现右指针指向的位置比左区间最大值小,那么左指针就将界限拉到右指针位置,右指针继续向下找,代码如下:

class Solution 
public:
    int partitionDisjoint(vector<int>& nums) 
        int n = nums.size();
        int maxNum = nums[0], left = 0, right = 1;
        int curMax = maxNum;
        while(right < n) 
            while(right < n && nums[right] >= maxNum) 
                curMax = max(curMax, nums[right]);
                right ++;
            
            if(right == n) 
                break;
            
            left = right;
            maxNum = curMax;
            right ++;
        
        return left + 1;
    
;

以上是关于LeetCode 915 分割数组[数组 双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 0915. 分割数组

LeetCode 1441 用栈操作构建数组[双指针] HERODING的LeetCode之路

leetcode167. 两数之和 II - 输入有序数组(双指针)

LeetCode刷题——双指针移除数组元素

leetcode.1574 删除最短的子数组使剩余数组有序 - 阿里笔试 双指针 二分

LeetCode 0350. 两个数组的交集 II:哈希/双指针