算法
不用排序,一次循环,用map计数,大于1的返回false,同时遍历时算出极大极小值,看差值是否小于4
自己实现max和min函数
Go 代码
func isContinuous(nums []int) bool {
if len(nums) != 5{
return false
}
Maxn := 0
Minn := 14
imap := make(map[int]int, 0)
for i:=0; i<len(nums); i++{
imap[nums[i]] ++
if nums[i] > 0{
if imap[nums[i]] >1{
return false
}
Maxn = max(Maxn, nums[i])
Minn = min(Minn, nums[i])
}
}
return Maxn - Minn <= 4
}
时间复杂度
$O(n)$