题解 | #最长无重复子数组#

最长无重复子数组

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

package main

import (
	"fmt"
	"math"
)

func maxLength( arr []int ) int {
    if len(arr) == 0 {
        return 0
    }
    var max int
    var b,e int //双指针
    var tarr []int
    for i:=0; i<len(arr); i++ {
        find := exists(tarr, arr[i])
        if find == -1 {
            tarr = append(tarr, arr[i])
            e = i+1
            max = int(math.Max(float64(max), float64(e-b)))

        }else {
            back := len(tarr)-(find +1)
            i = i - back
            tarr = []int{}
            tarr = append(tarr, arr[i])
            b = i;
            e = i;
        }
    }
    return max
}

func exists(arr []int, target int) int {

    for i, a := range arr {
        if a == target {

            return i
        }
    }

    return -1
}

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务