自学内容网 自学内容网

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)!