题目:https://leetcode-cn.com/problems/2vYnGI/
解法:
class Solution {
//时间复杂度O(m+n),空间复杂度O(1)
public int breakfastNumber(int[] staple, int[] drinks, int x) {
//定义结果集数量
int count = 0;
//对数组排好序,能利用已排序数组的一些特性
Arrays.sort(staple);
Arrays.sort(drinks);
//定义双指针
int l=0;
int r = drinks.length-1;
while(l<staple.length && r>=0){
if(staple[l]+drinks[r]<=x){
//巧妙的点在这,因为drinks是已排好序的,那既然r位置的元素能满足条件,那在它之前的都应该满足
count = (count + r + 1) % 1000000007; // 防止数太大
l++;
}else{
r--;
}
}
return count;
}
}