File tree Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Original file line number Diff line number Diff line change 1
1
pub struct Solution { }
2
2
3
3
impl Solution {
4
- fn max_res ( nums : & Vec < i32 > , i : usize , k : usize ) -> i32 {
5
- let res = if i >= nums. len ( ) {
6
- 0
7
- } else {
8
- nums[ i]
9
- + ( 1 ..=k)
10
- . map ( |x| Self :: max_res ( nums, i + x, k) )
11
- . max ( )
12
- . unwrap ( )
13
- } ;
4
+ fn max_res ( nums : & Vec < i32 > , i : usize , k : usize , cache : & mut Vec < Option < i32 > > ) -> i32 {
5
+ if i >= nums. len ( ) {
6
+ return 0 ;
7
+ }
8
+ if let Some ( res) = cache[ i] {
9
+ return res;
10
+ }
11
+ let res = nums[ i]
12
+ + ( 1 ..=k)
13
+ . map ( |x| Self :: max_res ( nums, i + x, k, cache) )
14
+ . max ( )
15
+ . unwrap ( ) ;
16
+ cache[ i] = Some ( res) ;
14
17
res
15
18
}
16
19
17
20
pub fn max_result ( nums : Vec < i32 > , k : i32 ) -> i32 {
18
- Self :: max_res ( & nums, 0 , k as usize )
21
+ let mut cache = vec ! [ None ; nums. len( ) + 2 ] ;
22
+ Self :: max_res ( & nums, 0 , k as usize , & mut cache)
19
23
}
20
24
}
21
25
You can’t perform that action at this time.
0 commit comments