41. 缺失的第一个正数 golang
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                41. 缺失的第一个正数 golang
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                41. 缺失的第一個(gè)正數(shù)
給你一個(gè)未排序的整數(shù)數(shù)組,請(qǐng)你找出其中沒有出現(xiàn)的最小的正整數(shù)。
示例 1:
輸入: [1,2,0]
 輸出: 3
 示例 2:
輸入: [3,4,-1,1]
 輸出: 2
 示例 3:
輸入: [7,8,9,11,12]
 輸出: 1
Code
雙百解法!這個(gè)題據(jù)說今日頭條出過,注意最優(yōu)解是讓切片自己成為hash。記住這種思想很重要
func firstMissingPositive(nums []int) int {// 如果只有1就返回2if len(nums) == 1 {if nums[0] == 1 {return 2} else {return 1}}// 如果沒有1返回1成功var flag_one intfor _, v := range nums {if v == 1 {flag_one = 1}}if flag_one == 0{return 1}// 把所有的負(fù)數(shù)和大于n的數(shù)字置1for k, v := range nums {if v <= 0{nums[k] = 1}if v > len(nums) {nums[k] = 1}}// 把所有的出現(xiàn)數(shù)字中對(duì)應(yīng)的value值乘以-1,代表這個(gè)數(shù)字出現(xiàn)了for _, v := range nums {if int(math.Abs(float64(v))) == len(nums) {nums[0] = int(math.Abs(float64(v)))} else if nums[int(math.Abs(float64(v)))] > 0 {nums[int(math.Abs(float64(v)))] *= -1if nums[0] < int(math.Abs(float64(v))) {nums[0] = int(math.Abs(float64(v)))}}}// 返回結(jié)果for i:=1; i<len(nums); i++ {if nums[i] > 0 {return i}}return nums[0] + 1 }作者:HodgeKou 鏈接:https://leetcode-cn.com/problems/first-missing-positive/solution/go-shuang-bai-jie-fa-o1-on-by-hodgekou/ 來源:力扣(LeetCode) 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。總結(jié)
以上是生活随笔為你收集整理的41. 缺失的第一个正数 golang的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 锣鼓巷剧情介绍
- 下一篇: 56. 合并区间 golang
