File tree Expand file tree Collapse file tree 6 files changed +203
-6
lines changed
solution/1500-1599/1553.Minimum Number of Days to Eat N Oranges Expand file tree Collapse file tree 6 files changed +203
-6
lines changed Original file line number Diff line number Diff line change 67
67
68
68
<!-- 这里可写通用的实现逻辑 -->
69
69
70
+ ** 方法一:记忆化搜索**
71
+
70
72
<!-- tabs:start -->
71
73
72
74
### ** Python3**
73
75
74
76
<!-- 这里可写当前语言的特殊实现逻辑 -->
75
77
76
78
``` python
77
-
79
+ class Solution :
80
+ def minDays (self , n : int ) -> int :
81
+ @cache
82
+ def dfs (n ):
83
+ if n < 2 :
84
+ return n
85
+ return 1 + min (n % 2 + dfs(n // 2 ), n % 3 + dfs(n // 3 ))
86
+
87
+ return dfs(n)
78
88
```
79
89
80
90
### ** Java**
81
91
82
92
<!-- 这里可写当前语言的特殊实现逻辑 -->
83
93
84
94
``` java
95
+ class Solution {
96
+ private Map<Integer , Integer > f = new HashMap<> ();
97
+
98
+ public int minDays (int n ) {
99
+ return dfs(n);
100
+ }
101
+
102
+ private int dfs (int n ) {
103
+ if (n < 2 ) {
104
+ return n;
105
+ }
106
+ if (f. containsKey(n)) {
107
+ return f. get(n);
108
+ }
109
+ int res = 1 + Math . min(n % 2 + dfs(n / 2 ), n % 3 + dfs(n / 3 ));
110
+ f. put(n, res);
111
+ return res;
112
+ }
113
+ }
114
+ ```
115
+
116
+ ### ** C++**
117
+
118
+ ``` cpp
119
+ class Solution {
120
+ public:
121
+ unordered_map<int, int> f;
122
+
123
+ int minDays(int n) {
124
+ return dfs(n);
125
+ }
126
+
127
+ int dfs (int n) {
128
+ if (n < 2) return n;
129
+ if (f.count(n)) return f[ n] ;
130
+ int res = 1 + min(n % 2 + dfs(n / 2), n % 3 + dfs(n / 3));
131
+ f[ n] = res;
132
+ return res;
133
+ }
134
+ };
135
+ ```
85
136
137
+ ### **Go**
138
+
139
+ ```go
140
+ func minDays(n int) int {
141
+ f := map[int]int{0: 0, 1: 1}
142
+ var dfs func(int) int
143
+ dfs = func(n int) int {
144
+ if v, ok := f[n]; ok {
145
+ return v
146
+ }
147
+ res := 1 + min(n%2+dfs(n/2), n%3+dfs(n/3))
148
+ f[n] = res
149
+ return res
150
+ }
151
+ return dfs(n)
152
+ }
153
+
154
+ func min(a, b int) int {
155
+ if a < b {
156
+ return a
157
+ }
158
+ return b
159
+ }
86
160
```
87
161
88
162
### ** ...**
Original file line number Diff line number Diff line change @@ -56,13 +56,85 @@ You need at least 3 days to eat the 6 oranges.
56
56
### ** Python3**
57
57
58
58
``` python
59
-
59
+ class Solution :
60
+ def minDays (self , n : int ) -> int :
61
+ @cache
62
+ def dfs (n ):
63
+ if n < 2 :
64
+ return n
65
+ return 1 + min (n % 2 + dfs(n // 2 ), n % 3 + dfs(n // 3 ))
66
+
67
+ return dfs(n)
60
68
```
61
69
62
70
### ** Java**
63
71
64
72
``` java
73
+ class Solution {
74
+ private Map<Integer , Integer > f = new HashMap<> ();
75
+
76
+ public int minDays (int n ) {
77
+ return dfs(n);
78
+ }
79
+
80
+ private int dfs (int n ) {
81
+ if (n < 2 ) {
82
+ return n;
83
+ }
84
+ if (f. containsKey(n)) {
85
+ return f. get(n);
86
+ }
87
+ int res = 1 + Math . min(n % 2 + dfs(n / 2 ), n % 3 + dfs(n / 3 ));
88
+ f. put(n, res);
89
+ return res;
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### ** C++**
95
+
96
+ ``` cpp
97
+ class Solution {
98
+ public:
99
+ unordered_map<int, int> f;
100
+
101
+ int minDays(int n) {
102
+ return dfs(n);
103
+ }
104
+
105
+ int dfs (int n) {
106
+ if (n < 2) return n;
107
+ if (f.count(n)) return f[ n] ;
108
+ int res = 1 + min(n % 2 + dfs(n / 2), n % 3 + dfs(n / 3));
109
+ f[ n] = res;
110
+ return res;
111
+ }
112
+ };
113
+ ```
65
114
115
+ ### **Go**
116
+
117
+ ```go
118
+ func minDays(n int) int {
119
+ f := map[int]int{0: 0, 1: 1}
120
+ var dfs func(int) int
121
+ dfs = func(n int) int {
122
+ if v, ok := f[n]; ok {
123
+ return v
124
+ }
125
+ res := 1 + min(n%2+dfs(n/2), n%3+dfs(n/3))
126
+ f[n] = res
127
+ return res
128
+ }
129
+ return dfs(n)
130
+ }
131
+
132
+ func min(a, b int) int {
133
+ if a < b {
134
+ return a
135
+ }
136
+ return b
137
+ }
66
138
```
67
139
68
140
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ unordered_map<int , int > f;
4
+
5
+ int minDays (int n) {
6
+ return dfs (n);
7
+ }
8
+
9
+ int dfs (int n) {
10
+ if (n < 2 ) return n;
11
+ if (f.count (n)) return f[n];
12
+ int res = 1 + min (n % 2 + dfs (n / 2 ), n % 3 + dfs (n / 3 ));
13
+ f[n] = res;
14
+ return res;
15
+ }
16
+ };
Original file line number Diff line number Diff line change
1
+ func minDays (n int ) int {
2
+ f := map [int ]int {0 : 0 , 1 : 1 }
3
+ var dfs func (int ) int
4
+ dfs = func (n int ) int {
5
+ if v , ok := f [n ]; ok {
6
+ return v
7
+ }
8
+ res := 1 + min (n % 2 + dfs (n / 2 ), n % 3 + dfs (n / 3 ))
9
+ f [n ] = res
10
+ return res
11
+ }
12
+ return dfs (n )
13
+ }
14
+
15
+ func min (a , b int ) int {
16
+ if a < b {
17
+ return a
18
+ }
19
+ return b
20
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
- private Map <Integer , Integer > map = new HashMap <>();
2
+ private Map <Integer , Integer > f = new HashMap <>();
3
3
4
4
public int minDays (int n ) {
5
+ return dfs (n );
6
+ }
7
+
8
+ private int dfs (int n ) {
5
9
if (n < 2 ) {
6
10
return n ;
7
11
}
8
- if (! map .containsKey (n )) {
9
- map . put ( n , Math . min ( minDays ( n / 2 ) + 1 + n % 2 , minDays ( n / 3 ) + 1 + n % 3 ) );
12
+ if (f .containsKey (n )) {
13
+ return f . get ( n );
10
14
}
11
- return map .get (n );
15
+ int res = 1 + Math .min (n % 2 + dfs (n / 2 ), n % 3 + dfs (n / 3 ));
16
+ f .put (n , res );
17
+ return res ;
12
18
}
13
19
}
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def minDays (self , n : int ) -> int :
3
+ @cache
4
+ def dfs (n ):
5
+ if n < 2 :
6
+ return n
7
+ return 1 + min (n % 2 + dfs (n // 2 ), n % 3 + dfs (n // 3 ))
8
+
9
+ return dfs (n )
You can’t perform that action at this time.
0 commit comments