Skip to content

Commit 8e9b2df

Browse files
add 845
1 parent 892ae8f commit 8e9b2df

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.contest
22

33

4-
import com.github.contest.math.checkPowersOfThree
4+
import com.github.contest.dp.longestMountain
55
import java.util.TreeMap
66

77

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

1212
fun main() {
1313

14-
checkPowersOfThree(12)
14+
longestMountain(intArrayOf(2, 1, 4, 7, 3, 2, 5))
1515
}
1616

1717
fun generateTesting() {

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,4 +418,40 @@ fun longestArithSeqLength(nums: IntArray): Int {
418418
return longest
419419
}
420420

421+
/**
422+
* 845. Longest Mountain in Array
423+
*/
424+
425+
fun longestMountain(arr: IntArray): Int {
426+
val n = arr.size
427+
if (n < 3) return 0
428+
429+
var longestMountain = 0
430+
var i = 1
431+
432+
while (i < n - 1) {
433+
434+
if (arr[i - 1] < arr[i] && arr[i] > arr[i + 1]) {
435+
436+
var left = i - 1
437+
while (left > 0 && arr[left - 1] < arr[left]) {
438+
left--
439+
}
440+
441+
442+
var right = i + 1
443+
while (right < n - 1 && arr[right] > arr[right + 1]) {
444+
right++
445+
}
446+
447+
448+
longestMountain = maxOf(longestMountain, right - left + 1)
449+
i = right
450+
}
451+
i++
452+
}
453+
454+
return longestMountain
455+
}
456+
421457

0 commit comments

Comments
 (0)