LeetCode1498. 满足条件的子序列数目

该博客主要讨论LeetCode第1498题,要求找到数组中所有最小值与最大值之和小于或等于特定值的非空子序列数量。解决方案采用排序和双指针技巧,通过从最小值开始逐渐增加右指针,计算符合条件的子序列个数,最后返回结果对特定值取模。
摘要由CSDN通过智能技术生成

题目

给你一个整数数组 nums 和一个整数 target

请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target非空子序列的数目。

由于答案可能很大,请将结果对 10^9 + 7 取余后返回。

思路

排序 + 双指针

将数组从小到大排序, 双指针left指向排好序的第一个元素, right指向最后一个.

首先寻找符合条件的左右端点, 显然nums[left] + nums[right] <= target 时,符合条件, 此时我们统计可以使用的子序列个数为 2 r − l 2^{r -l} 2<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值