Skip to content

Commit 24fdc75

Browse files
authored
Create get-maximum-in-generated-array.cpp
1 parent d742ad0 commit 24fdc75

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Time: O(n)
2+
// Space: O(n)
3+
4+
vector<int> nums = {0, 1};
5+
vector<int> dp = {0, 1};
6+
class Solution {
7+
public:
8+
int getMaximumGenerated(int n) {
9+
if (n + 1 > size(dp)) {
10+
for (int i = size(nums); i <= n; ++i) {
11+
if (i % 2 == 0) {
12+
nums.emplace_back(nums[i / 2]);
13+
} else {
14+
nums.emplace_back(nums[i / 2] + nums[i / 2 + 1]);
15+
}
16+
dp.emplace_back(max(dp.back(), nums.back()));
17+
}
18+
}
19+
return dp[n];
20+
}
21+
};
22+
23+
24+
// Time: O(n)
25+
// Space: O(n)
26+
class Solution2 {
27+
public:
28+
int getMaximumGenerated(int n) {
29+
if (n == 0) {
30+
return 0;
31+
}
32+
vector<int> nums(n + 1);
33+
nums[1] = 1;
34+
int result = 1;
35+
for (int i = 2; i <= n; ++i) {
36+
if (i % 2 == 0) {
37+
nums[i] = nums[i / 2];
38+
} else {
39+
nums[i] = nums[i / 2] + nums[i / 2 + 1];
40+
}
41+
result = max(result, nums[i]);
42+
}
43+
return result;
44+
}
45+
};

0 commit comments

Comments
 (0)