Skip to content

Commit 7d454bc

Browse files
authored
feat: add swift implementation to lcof2 problem: No.093 (doocs#3479)
1 parent 1984167 commit 7d454bc

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

lcof2/剑指 Offer II 093. 最长斐波那契数列/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,35 @@ func lenLongestFibSubseq(arr []int) int {
188188
}
189189
```
190190

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+
191220
<!-- tabs:end -->
192221

193222
<!-- solution:end -->
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
}

0 commit comments

Comments
 (0)