Skip to content

Latest commit

 

History

History
26 lines (26 loc) · 729 Bytes

904水果成篮.md

File metadata and controls

26 lines (26 loc) · 729 Bytes

双指针-滑动窗口

func totalFruit(fruits []int) int {
    // 用map来记录水果的数量
    basket := map[int]int{}
    res := 0
    // 双指针-滑动窗口来维持满足最多两种水果的限制
    for i, j := 0, 0; j < len(fruits); j++ {
        // 将右指针的水果放入篮子中
        basket[fruits[j]]++
        // 当篮子中的水果超过两种时左指针右移减少水果
        for i <= j && len(basket) > 2 {
            basket[fruits[i]]--
            if basket[fruits[i]] == 0 {
                delete(basket, fruits[i])
            }
            i++
        }
        // 对比更新结果
        if res < j - i + 1 {
            res = j - i + 1
        }
    }
    return res
}