NC41 最长无重复子数组
func maxLength( arr []int ) int {maxLen := 0len := 0left := -1valueMap := make(map[int]int)for idx, a := range arr {if valueIdx, ok := valueMap[a]; !ok || valueMap[a] == -1 {len++} else {if valueIdx > left {left = valueIdx}len = idx - left}valueMap[a] = idxif maxLen < len {maxLen = len}}return maxLen}
//好像答案不对
func maxLength(nums []int) int {
if len(nums)==0 {
return 0
}
max, start:= 0, 0
hash := map[int]int{}
for end := 0; end < len(nums); end++{
if hash[nums[end]] != 0 {
start = Max(start, hash[nums[end]]+1)
} //历史最大值,因为可能新的重复索引要小于start,更新成重复的索引下一个
hash[nums[end]] = end
max = Max(max, end-start+1)
}
return max
}
