kt: add «873. Length of Longest Fibonacci Subsequence»
URL: https://leetcode.com/problems/length-of-longest-fibonacci-subsequence/
This commit is contained in:
parent
c4a58d7d79
commit
c1c49bfcfe
1 changed files with 33 additions and 0 deletions
33
kt/length-of-longest-fibonacci-subsequence.kt
Normal file
33
kt/length-of-longest-fibonacci-subsequence.kt
Normal file
|
@ -0,0 +1,33 @@
|
|||
class Solution {
|
||||
fun lenLongestFibSubseq(arr: IntArray): Int {
|
||||
val n = arr.size
|
||||
|
||||
val dp = Array(n) { IntArray(n) }
|
||||
var maxLen = 0
|
||||
|
||||
(2..n - 1).forEach {
|
||||
var (l, r) = 0 to it - 1
|
||||
|
||||
while (l < r) {
|
||||
val sum = arr[l] + arr[r]
|
||||
|
||||
when {
|
||||
sum > arr[it] -> r--
|
||||
sum < arr[it] -> l++
|
||||
else -> {
|
||||
dp[r][it] = dp[l][r] + 1
|
||||
maxLen = listOf(maxLen, dp[r][it]).max()!!
|
||||
|
||||
r--
|
||||
l++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return when (maxLen) {
|
||||
0 -> 0
|
||||
else -> maxLen + 2
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue