zoukankan      html  css  js  c++  java
  • LeetCode Golang实现 1. 两数之和

    1. 两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    

      

    方法一: 暴力法:

    leetCode 给出运行时间 60ms
    
    func twoSum(nums []int, target int) []int {
    	for i := 0; i < len(nums)-1; i++ {
    		for j := i+1; j < len(nums); j++ {
    			if nums[i]+nums[j] == target {
    				return []int{nums[i], nums[j]}
    			}
    		}
    	}
    	return nil
    }
    

      

    方法二: 利用map, 借助空间 降低时间复杂度

    leetCode 给出运行时间 8ms
    
    package main
    
    import "fmt"
    
    func main(){
    	nums := []int{3,3}
    	fmt.Println(twoSum(nums,6))
    }
    
    
    func twoSum(nums []int, target int) []int {
    	numsMap := make(map[int]int)
    	for i := 0; i < len(nums); i++ {
    		numsMap[nums[i]] = i
    	}
    	for i := 0; i < len(nums); i++ {
    		if _,ok := numsMap[target-nums[i]];ok && numsMap[target-nums[i]] != i{
    			return []int{numsMap[target-nums[i]], i}
    		}
    	}
    
    	return nil
    }
    

      

  • 相关阅读:
    HTTP
    nginx反向代理和负载均衡
    keepalive
    lnmp
    DNS
    jumpserver跳板机
    博客已搬家到CSDN
    JAVA中关于上传图片到数据库和从数据库取出显示图片的问题
    checkbox的标签和全选中问题
    SOCKET
  • 原文地址:https://www.cnblogs.com/gettolive/p/10165996.html
Copyright © 2011-2022 走看看