leetcode41

 package main

 import (
"fmt"
) func firstMissingPositive(nums []int) int {
m := make(map[int]int)
for a := ; a < len(nums); a++ {
if nums[a] > {
_, ok := m[nums[a]]
if ok == false {
m[nums[a]] = nums[a]
}
}
}
i :=
_, ok := m[i]
for ok {
i = i +
_, ok := m[i]
if ok == false {
break
}
}
return i
}
func main() {
var n []int
n = append(n, )
n = append(n, )
n = append(n, )
n = append(n, )
n = append(n, )
r := firstMissingPositive(n)
fmt.Println(r)
}

第一次遍历:用一个map记录所有出现过的值,这里忽略掉所有非正数(小于等于0的)。

第二次遍历:从1开始,判断是否在map中,如果在map中继续判断下一个数字,一直到第一个不在字典中的值,则为所求。

17-25行是想写个do while,但是感觉怪怪的。

复杂的算法虽好但是想多了容易掉头发,有时性能不够可以用语言和硬件改善嘛。以人为本,珍爱生命,远离强迫症。

leetcode41

上一篇:Java-Hirbernate小结大纲


下一篇:python学习之----获取标签属性