LCP 28. 采购方案(双指针)

2022-01-13 14:47:44 浏览数 (1)

题目

思路

如果 nums[left] nums[right] > target,那么只能左移 right 指针来调整大小,因为 left 指针右移的话,就重新访问了一遍访问过的元素。

如果 nums[left] nums[right] <= target,那么说明当前 nums[left, right] 范围内的数都符合要求,累加起来就好了。记得右移 left 指针,以及累加过程中求模。

代码语言:javascript复制
class Solution {
public:
    int purchasePlans(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        int num = 0, left = 0, right = nums.size() - 1;
        while (left < right) {
            if (nums[left]   nums[right] > target) right--;
            else {
                num  = right - left;
                num %= 1000000007;
                left  ;
            }
        }
        return num;
    }
};

0 人点赞