题目
思路
如果 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;
}
};