File tree 1 file changed +45
-0
lines changed
1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments