代码:
这道题不能用Math.pow 精度不够 得自己写个数组存2的n次方
class Solution {public int numSubseq(int[] nums, int target) {int mod = 1000000007;int n = nums.length;System.out.println(n);int[] f = new int[100005];f[0]=1;for(int i=1;i<f.length;i++){f[i] = (f[i-1]<<1)%mod;}int cnt = 0;Arrays.sort(nums);for(int i=0;i<n;i++){System.out.println(cnt);int l=i,r=n-1;if(nums[r]+ nums[i]<=target){cnt=(cnt+f[r-i])%mod;System.out.println((int)Math.pow(2,r-i)%mod);continue;}while(l<r){int m = l + (r-l)/2;if(nums[m]+nums[i]<=target){l = m+1;}else{r = m;}}if(r-i-1>=0){// System.out.println((int)Math.pow(2,r-i-1)%mod);cnt=(cnt+f[r-i-1])%mod;}}return (int)cnt;}
}