Skip to content

Commit baf711f

Browse files
committedMar 1, 2025
add 1027
1 parent 8e7c86b commit baf711f

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed
 

‎contest/src/main/java/com/github/contest/Execute.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.contest
22

33

4-
import com.github.contest.dp.longestStrChain
4+
import com.github.contest.dp.longestArithSeqLength
55
import java.util.TreeMap
66

77

@@ -11,8 +11,7 @@ import java.util.TreeMap
1111

1212
fun main() {
1313

14-
longestStrChain(arrayOf("a", "b", "ba", "bca", "bda", "bdca")).also { println(it) }
15-
14+
longestArithSeqLength(intArrayOf(3, 6, 9, 12))
1615
}
1716

1817
fun generateTesting() {

‎contest/src/main/java/com/github/contest/dp/DpLeetcode.kt

+22
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,25 @@ fun longestStrChain(words: Array<String>): Int {
395395

396396
return longestChain
397397
}
398+
399+
/**
400+
* 1027. Longest Arithmetic Subsequence
401+
*/
402+
403+
fun longestArithSeqLength(nums: IntArray): Int {
404+
val n = nums.size
405+
406+
val dp = Array(n) { mutableMapOf<Int, Int>() }
407+
var longest = 2
408+
409+
for (i in 1 until n) {
410+
for (j in 0 until i) {
411+
val diff = nums[i] - nums[j]
412+
val length = dp[j].getOrDefault(diff, 1) + 1
413+
dp[i][diff] = length
414+
longest = maxOf(longest, length)
415+
}
416+
}
417+
418+
return longest
419+
}

0 commit comments

Comments
 (0)
Please sign in to comment.