Given two integers tomatoSlices and cheeseSlices. The ingredients of different burgers are as follows:
Jumbo Burger: 4 tomato slices and 1 cheese slice.
Small Burger: 2 Tomato slices and 1 cheese slice.
Return [total_jumbo, total_small] so that the number of remaining tomatoSlices equal to 0 and the number of remaining cheeseSlices equal to 0. If it is not possible to make the remaining tomatoSlices and cheeseSlices equal to 0 return [].
Example 1:
Input: tomatoSlices = 16, cheeseSlices = 7
Output: [1,6]
Explantion: To make one jumbo burger and 6 small burgers we need 4*1 + 2*6 = 16 tomato and 1 + 6 = 7 cheese. There will be no remaining ingredients.
Example 2:
Input: tomatoSlices = 17, cheeseSlices = 4
Output: []
Explantion: There will be no way to use all ingredients to make small and jumbo burgers.
Example 3:
Input: tomatoSlices = 4, cheeseSlices = 17
Output: []
Explantion: Making 1 jumbo burger there will be 16 cheese remaining and making 2 small burgers there will be 15 cheese remaining.
The height of the binary tree is less than or equal to 20
The total number of nodes is between [1, 10^4]
Total calls of find() is between [1, 10^4]
0 <= target <= 10^6
Solutoin 1: Recursion and HashSet
Time complexity: Recover O(n), find O(1) Space complexity: O(n)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Author: Huahua
classFindElements{
public:
FindElements(TreeNode*root){
recover(root,0);
}
boolfind(inttarget){
returns_.count(target);
}
private:
unordered_set<int>s_;
voidrecover(TreeNode*root,intval){
if(!root)return;
root->val=val;
s_.insert(val);
recover(root->left,val *2+1);
recover(root->right,val *2+2);
}
};
Solution 2: Recursion and Binary format
The binary format of t = (target + 1) (from high bit to low bit, e.g. in reverse order) decides where to go at each node. t % 2 == 1, go right, otherwise go left t = t / 2 or t >>= 1
1
2
3
4
5
6
7
8
9
10
11
12
e.g.target=13,t=13+1=14
t=14,t%1=0,t/2=7,left
t=7,t%1=1,t/2=3,right
t=3,t%1=1,t/2=1,right
13=>right,right,left
0
\
2
\
6
/
13
Time complexity: Recover O(n), find O(log|target|) Space complexity: O(1)