Leetcode—1498. 满足条件的子序列数目【中等】
2024每日刷题(210)
Leetcode—1498. 满足条件的子序列数目
C++实现代码
class Solution {
public:
int numSubseq(vector<int>& nums, int target) {
const int MOD = 1e9 + 7;
int n = nums.size();
vector<int> pows(n, 1);
for(int i = 1; i < n; i++) {
pows[i] = pows[i - 1] * 2 % MOD;
}
ranges::sort(nums);
// [3, 3, 6], 8
// 2 ^ (right - (left + 1) + 1)
int left = 0;
int right = n - 1;
auto it = lower_bound(nums.begin(), nums.end(), target);
if(it != nums.end()) {
right = it - nums.begin();
}
int ans = 0;
while(left <= right) {
if(nums[left] + nums[right] > target) {
right--;
} else {
ans = (ans + pows[right - left]) % MOD;
left++;
}
}
return ans;
}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!
原文地址:https://blog.csdn.net/qq_44631615/article/details/144323080
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!