zoukankan      html  css  js  c++  java
  • leetcode练习之No.1------ 两数之和Two Sum

    github地址:git@github.com:ZQCard/leetcode.git

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

    你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

    示例:

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

    // 56ms // 复杂度分析: // 时间复杂度:O(n^2)O(n2), 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素, // 这将耗费 O(n)O(n) 的时间。因此时间复杂度为 O(n^2)O(n2)。 // 空间复杂度:O(1)O(1)。 
    func TwoSum(nums []int, target int) []int{
    var res []int
    for key, value := range nums {
    for k, v := range nums{
    if k <= key {
    continue
    }
    if value + v == target {
    res = append(res, key)
    res = append(res, k)
    return res
    }
    }
    }
    return res
    }

    // 44ms // 优化1
    func TwoSum2(nums []int, target int) []int {
    length := len(nums)
    for i := 0; i < length; i++ {
    for j := i + 1; j < length; j++ {
    if nums[i] + nums[j] == target{
    return []int{i, j}
    }
    }
    }
    return []int{}
    }

    // 8ms // 复杂度分析: // 时间复杂度:O(n)O(n), 我们把包含有 nn 个元素的列表遍历两次。 // 由于哈希表将查找时间缩短到 O(1)O(1) ,所以时间复杂度为 O(n)O(n)。 // 空间复杂度:O(n)O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表中存储了 nn 个元素。
    func TwoSumTwoMap(nums []int, target int) []int {
    numMap := make(map[int]int)
    for i := 0; i < len(nums); i++ {
    numMap[i] = nums[i]
    }

    numMap2 := make(map[int]int)
    for i := 0; i < len(nums); i++ {
    numMap2[nums[i]] = i
    }

    for i := 0; i < len(nums); i++ {
    complement := target - numMap[i]
    if k, ok := numMap2[complement]; k != i && ok{
    return []int{i, k}
    }
    }
    return nil
    } // 4ms func TheBest(nums []int, target int) []int { m := make(map[int]int) for i, num := range nums { t, found := m[target - num] if found { return []int{t, i} } else { m[num] = i } } return nil }
  • 相关阅读:
    点灯
    流水灯
    <<晨间日记>>要点
    PL/SQL 函数学习 Start with...Connect By
    FTP Put步骤回顾
    ORA16038,ORA19809,ORA00312无法归档的解决方法
    Emacs for windows
    ORA01578,ORA01115,ORA01110 ORACLE 数据块损坏
    MySQL存储过程的调优过程
    ORA01110 数据文件日志文件丢失打不开数据库
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9940197.html
Copyright © 2011-2022 走看看