zoukankan      html  css  js  c++  java
  • leetcode41

     1 package main
     2 
     3 import (
     4     "fmt"
     5 )
     6 
     7 func firstMissingPositive(nums []int) int {
     8     m := make(map[int]int)
     9     for a := 0; a < len(nums); a++ {
    10         if nums[a] > 0 {
    11             _, ok := m[nums[a]]
    12             if ok == false {
    13                 m[nums[a]] = nums[a]
    14             }
    15         }
    16     }
    17     i := 1
    18     _, ok := m[i]
    19     for ok {
    20         i = i + 1
    21         _, ok := m[i]
    22         if ok == false {
    23             break
    24         }
    25     }
    26     return i
    27 }
    28 func main() {
    29     var n []int
    30     n = append(n, 7)
    31     n = append(n, 8)
    32     n = append(n, 9)
    33     n = append(n, 11)
    34     n = append(n, 12)
    35     r := firstMissingPositive(n)
    36     fmt.Println(r)
    37 }

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

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

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

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

  • 相关阅读:
    splice() 的用法
    JAVA 序列化
    对象的组合
    基于SSM框架实现简单的登录注册
    SpringMVC 处理映射
    基于高德地图的位置服务开发(二)
    基于高德地图的位置服务开发(一)
    Spring MVC页面重定向
    Spring MVC
    Spring MVC
  • 原文地址:https://www.cnblogs.com/asenyang/p/10491948.html
Copyright © 2011-2022 走看看