题目:1237. 找出给定方程的正整数解
思路:双指针+二分
code:
/*
* // This is the custom function interface.
* // You should not implement it, or speculate about its implementation
* class CustomFunction {
* public:
* // Returns f(x, y) for any given positive integers x and y.
* // Note that f(x, y) is increasing with respect to both x and y.
* // i.e. f(x, y) < f(x + 1, y), f(x, y) < f(x, y + 1)
* int f(int x, int y);
* };
*/
class Solution {
public:
vector<vector<int>> findSolution(CustomFunction& customfunction, int z) {
int y = 1000;
vector<vector<int>> res;
for(int x=1;x<=1000;x++){
int left = 1;
int right = y;
while(left<=right){
int mid = left+(right-left)/2;
int temp = customfunction.f(x,mid);
if(temp==z){
res.push_back({x,mid});
break;
}else if(temp>z){
right=mid-1;
}else{
left=mid+1;
}
}
}
return res;
}
};