题解 | #合唱队#

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

package main

import (
    "fmt"
)

func main() {
    
    //接收参数
    var count int
    fmt.Scan(&count)
    ori := count 

    nums := make([]int, ori, ori)
    index := 0
    for count > 0 {
       height := 0
       fmt.Scan(&height)

       nums[index] = height
       count--
       index++
    }

    if len(nums) < 3 {
        fmt.Print(0)
        return
    }


    dpUp := make([]int, ori, ori) //dpUp[i] --> 以i为顶点时的递增最高值(顶点,左边元素均小于自己)
    dpDown := make([]int, ori, ori) //dpDown[i] --> 以i为顶点时的递减最高值(顶点,右边元素均小于自己)

    for i := 0; i < ori; i++ {
        dpUp[i] = 1
        dpDown[i] = 1
    }

    for i := 1; i < ori; i++ {
        for j := 0; j < i; j++ {
            if nums[i] > nums[j] {
                dpUp[i] = getMax(dpUp[i], dpUp[j]+1)
            }
        }
    }

     for i := ori-2; i >= 0; i-- {
        for j := ori-1; j > i; j-- {
            if nums[i] > nums[j] {
                dpDown[i] = getMax(dpDown[i], dpDown[j]+1)
            }
        }
    }

    var max int
    for i := 0; i < len(dpDown); i++ {
        max = getMax(max, dpDown[i]+dpUp[i]-1)
    }

    fmt.Println(ori-max)
}

func getMax(a, b int) int {
    if a > b {
        return a
    }
    return b
}

全部评论

相关推荐

码农索隆:传音老登来也。 但是这个我不知道怎么回答,不仅仅传音吧,很多公司在候选人不第一时间接受offer或主动将报道时间延期时,都会再从池子里面捞人,直到l捞到满足公司所有要求的人。
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务