915. 分割数组
func partitionDisjoint(nums []int) int {
n := len(nums)
mi := make([]int, n+1)
mi[n] = nums[n-1]
for i := n - 1; i >= 0; i-- {
mi[i] = min(nums[i], mi[i+1]) // 维护当前下标i之后的最小值
}
mx := 0
for i := 1; i <= n; i++ {
v := nums[i-1]
mx = max(mx, v)
if mx <= mi[i] { // 当前下标最大值小于 当前下标右边的最小值
return i
}
}
return 0
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func min(a, b int) int {
if a < b {
return a
}
return b
}