600th Problem Solved
I wanted problem 600th to be a hard problem, but after few attempts, I switched back to either an easy of medium one. Turned out this one was easy. Here it is: https://leetcode.com/problems/find-positive-integer-solution-for-a-given-equation/
Because the function is monotonic and the limits for x and y are small (x*y = O(10^6)), you can do a nested loop on x and y, pruning the search when the result of the function is greater than the given input z (again, the function is monotonic, you need to use this information).
That's it. That's it, 600th. Onto 700th now. Code is down below, cheers, ACC.
public class Solution
{
public IList<IList<int>> FindSolution(CustomFunction customfunction, int z)
{
List<IList<int>> retVal = new List<IList<int>>();
for (int x = 1; x <= 1000; x++)
{
for (int y = 1; y <= 1000; y++)
{
int val = customfunction.f(x, y);
if (val > z) break;
if (val == z)
{
retVal.Add(new List<int> { x, y });
}
}
}
return retVal;
}
}
1237. Find Positive Integer Solution for a Given Equation
Easy
Given a function  
f(x, y) and a value z, return all positive integer pairs x and y where f(x,y) == z.
The function is constantly increasing, i.e.:
- f(x, y) < f(x + 1, y)
- f(x, y) < f(x, y + 1)
The function interface is defined like this: 
interface CustomFunction {
public:
  // Returns positive integer f(x, y) for any given positive integer x and y.
  int f(int x, int y);
};
For custom testing purposes you're given an integer 
function_id and a target z as input, where function_id represent one function from an secret internal list, on the examples you'll know only two functions from the list.  
You may return the solutions in any order.
Example 1:
Input: function_id = 1, z = 5 Output: [[1,4],[2,3],[3,2],[4,1]] Explanation: function_id = 1 means that f(x, y) = x + y
Example 2:
Input: function_id = 2, z = 5 Output: [[1,5],[5,1]] Explanation: function_id = 2 means that f(x, y) = x * y
Constraints:
- 1 <= function_id <= 9
- 1 <= z <= 100
- It's guaranteed that the solutions of f(x, y) == zwill be on the range1 <= x, y <= 1000
- It's also guaranteed that f(x, y)will fit in 32 bit signed integer if1 <= x, y <= 1000
Because the function is monotonic and the limits for x and y are small (x*y = O(10^6)), you can do a nested loop on x and y, pruning the search when the result of the function is greater than the given input z (again, the function is monotonic, you need to use this information).
That's it. That's it, 600th. Onto 700th now. Code is down below, cheers, ACC.
public class Solution
{
public IList<IList<int>> FindSolution(CustomFunction customfunction, int z)
{
List<IList<int>> retVal = new List<IList<int>>();
for (int x = 1; x <= 1000; x++)
{
for (int y = 1; y <= 1000; y++)
{
int val = customfunction.f(x, y);
if (val > z) break;
if (val == z)
{
retVal.Add(new List<int> { x, y });
}
}
}
return retVal;
}
}
 
 
Comments
Post a Comment