【1498. 满足条件的子序列数目】二分查找
2022/6/8 23:21:53
本文主要是介绍【1498. 满足条件的子序列数目】二分查找,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.Arrays; class Solution { public int numSubseq(int[] nums, int target) { Arrays.sort(nums); int len = nums.length; long ans = 0l; for (int i = 0; i < len; i++) { if( nums[i]*2 <= target){ int idx = upperBound(nums,0,len,target-nums[i]); int rightmost = idx - 1; ans = ans + pow(rightmost-i); ans %= 1000000007; } } return (int)ans; } public long pow(int x){ if( x == 0){ return 1; } if( x == 1){ return 2; } long y = pow(x/2); if( x % 2 == 1){ return y*y*2%1000000007; } return y*y%1000000007; } /** * 返回大于key的第一个 * * @param arr * @param start * @param high * @param key * @return */ public int upperBound(int[] arr, int start, int high, int key) { while (start < high) { int mid = (start+high)/2; if(arr[mid] >key){ high = mid; }else{ start = mid+1; } } return high; } }
这篇关于【1498. 满足条件的子序列数目】二分查找的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南