题解 | #最长的可整合子数组的长度#go解法

最长的可整合子数组的长度

http://www.nowcoder.com/practice/677a21987e5d46f1a62cded9509a94f2

package main

//输入描述:
//第一行一个整数N,表示数组长度
//第二行N个整数,分别表示数组内的元素
//输出描述:
//输出一个整数,表示最大可整合子数组的长度
import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	var (
		N        int
		inputArr []int
	)
	input := bufio.NewScanner(os.Stdin)
	input.Scan() //读取第一行
	N, _ = strconv.Atoi(input.Text())
	inputArr = make([]int, N)
	input.Scan()
	intBuffer := strings.Split(input.Text(), " ") //整体读取第二行
	for i := 0; i < N; i++ {
		inputArr[i], _ = strconv.Atoi(intBuffer[i])
	}
	fmt.Println(getLIL(inputArr))
}

func getLIL(arr []int) int {
	res := 0
	if len(arr) <= 1 {
		return len(arr)
	}
	for i := 0; i < len(arr); i++ {
		hm := map[int]int{}
		max, min := arr[i], arr[i]
		for j := i; j < len(arr); j++ {
			if _, ok := hm[arr[j]]; ok {
				break
			}
			hm[arr[i]]++
			max = Max(max, arr[j])
			min = Min(min, arr[j])
			if max-min == j-i {
				res = Max(res, j-i+1)
			}

		}
	}
	return res

}

//判断是否为最长可整合子数组

func Max(i, j int) int {
	if i < j {
		return j
	}
	return i
}
func Min(i, j int) int {
	if i < j {
		return i
	}
	return j
}

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443331次浏览 4520人参与
# 春招别灰心,我们一人来一句鼓励 #
42187次浏览 537人参与
# 阿里云管培生offer #
120427次浏览 2220人参与
# 地方国企笔面经互助 #
7973次浏览 18人参与
# 同bg的你秋招战况如何? #
77166次浏览 569人参与
# 实习必须要去大厂吗? #
55811次浏览 961人参与
# 北方华创开奖 #
107469次浏览 600人参与
# 虾皮求职进展汇总 #
116310次浏览 887人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11683次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454962次浏览 34861人参与
# 提前批简历挂麻了怎么办 #
149927次浏览 1978人参与
# 在找工作求抱抱 #
906096次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196037次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157648次浏览 2267人参与
# 双非本科求职如何逆袭 #
662384次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12806次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35906次浏览 384人参与
# 简历中的项目经历要怎么写? #
86937次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20153次浏览 240人参与
# 我的上岸简历长这样 #
452074次浏览 8089人参与
牛客网
牛客企业服务