Skip to content

Commit b86e85d

Browse files
authored
Create number-of-subsequences-that-satisfy-the-given-sum-condition.cpp
1 parent c93649b commit b86e85d

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Time: O(nlogn)
2+
// Space: O(n)
3+
4+
class Solution {
5+
public:
6+
int numSubseq(vector<int>& nums, int target) {
7+
static const int MOD = 1e9 + 7;
8+
sort(begin(nums), end(nums));
9+
int result = 0;
10+
int left = 0, right = nums.size() - 1;
11+
while (left <= right) {
12+
if (nums[left] + nums[right] > target) {
13+
--right;
14+
} else {
15+
result = (result + pow(2, right - left, MOD)) % MOD;
16+
++left;
17+
}
18+
}
19+
return result;
20+
}
21+
22+
private:
23+
uint64_t pow(uint64_t a,uint64_t b, uint64_t m) {
24+
a %= m;
25+
uint64_t result = 1;
26+
while (b) {
27+
if (b & 1) {
28+
result = (result * a) % m;
29+
}
30+
a = (a * a) % m;
31+
b >>= 1;
32+
}
33+
return result;
34+
}
35+
};

0 commit comments

Comments
 (0)