File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed
lcof2/剑指 Offer II 093. 最长斐波那契数列 Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -188,6 +188,35 @@ func lenLongestFibSubseq(arr []int) int {
188
188
}
189
189
```
190
190
191
+ #### Swift
192
+
193
+ ``` swift
194
+ class Solution {
195
+ func lenLongestFibSubseq (_ arr : [Int ]) -> Int {
196
+ let n = arr.count
197
+ var mp = [Int : Int ]()
198
+ for i in 0 ..< n {
199
+ mp[arr[i]] = i
200
+ }
201
+
202
+ var dp = Array (repeating : Array (repeating : 2 , count : n), count : n)
203
+ var ans = 0
204
+
205
+ for i in 0 ..< n {
206
+ for j in 0 ..< i {
207
+ let delta = arr[i] - arr[j]
208
+ if let k = mp[delta], k < j {
209
+ dp[j][i] = dp[k][j] + 1
210
+ ans = max (ans, dp[j][i])
211
+ }
212
+ }
213
+ }
214
+
215
+ return ans > 2 ? ans : 0
216
+ }
217
+ }
218
+ ```
219
+
191
220
<!-- tabs: end -->
192
221
193
222
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func lenLongestFibSubseq( _ arr: [ Int ] ) -> Int {
3
+ let n = arr. count
4
+ var mp = [ Int: Int] ( )
5
+ for i in 0 ..< n {
6
+ mp [ arr [ i] ] = i
7
+ }
8
+
9
+ var dp = Array ( repeating: Array ( repeating: 2 , count: n) , count: n)
10
+ var ans = 0
11
+
12
+ for i in 0 ..< n {
13
+ for j in 0 ..< i {
14
+ let delta = arr [ i] - arr[ j]
15
+ if let k = mp [ delta] , k < j {
16
+ dp [ j] [ i] = dp [ k] [ j] + 1
17
+ ans = max ( ans, dp [ j] [ i] )
18
+ }
19
+ }
20
+ }
21
+
22
+ return ans > 2 ? ans : 0
23
+ }
24
+ }
You can’t perform that action at this time.
0 commit comments