当前位置: 首页 > news >正文

20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法

题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。  你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。  你可以按任意顺序返回答案。  示例 1:  输入:nums = [2,7,11,15], target = 9  
输出:[0,1]  
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。  
示例 2:  输入:nums = [3,2,4], target = 6  
输出:[1,2]  
示例 3:  输入:nums = [3,3], target = 6  
输出:[0,1]  提示:  2 <= nums.length <= 104  
-109 <= nums[i] <= 109  
-109 <= target <= 109  
只会存在一个有效答案

思路

1、使用 Hash 表(Go 语言中是 map 类型)存储遍历过程中的数组元素和下标,从而避免使用 for for 两层循环的暴力解法,将时间复杂度从O(N^2)降低到O(N)。

2、指定 Hash 表的初始容量,避免运行中的内存重新分配。

解题过程

1、初始化一个空的哈希表 hashMap 来存储遍历过的数字及其索引。

2、遍历数组 nums,对于每个元素 nums[i]:

  • 计算 target-v,得到与当前元素配对的目标数字。

  • 检查这个目标数字是否已经在 hashMap 中存在:

    • 如果存在,说明找到了一对数字,它们的和等于目标值,返回它们的索引。

    • 如果不存在,将当前元素及其索引存入 hashMap。

3、如果遍历结束后没有找到任何一对数字,返回 nil。

复杂度

  • 时间复杂度: O(n)

  • 空间复杂度: O(n)

Code

func toSum(nums []int, target int) []int {  hashMap := make(map[int]int, len(nums))  for k, v := range nums {  if p, ok := hashMap[target-v]; ok {  return []int{p, k}  }  hashMap[v] = k  }  return nil  
}

运行结果

请添加图片描述

引用:https://leetcode.cn/problems/two-sum/solutions/2976507/goyu-yan-liang-shu-zhi-he-ti-jie-by-deng-pp8x

http://www.lryc.cn/news/477373.html

相关文章:

  • mysql之命令行基础指令
  • 使用Django Channels实现WebSocket实时通信
  • 「Mac畅玩鸿蒙与硬件27」UI互动应用篇4 - 猫与灯的互动应用
  • Spring-Day4
  • C#-类:成员属性
  • qt QDragEnterEvent详解
  • Vue项目与IE浏览器的兼容性分析(Vue|ElementUI)
  • 【C++之STL】一文学会使用 string
  • 好用的办公套件--- ONLYOFFICE
  • Android View事件分发
  • 攻防世界GFSJ1229 Three
  • 2023 icpc杭州(M,J,D,G,H)
  • 在CentOS 7上安装Alist
  • 【C/C++】memcpy函数的模拟实现
  • 嵌入式开发之线程互斥
  • JavaScript 变量作用域与函数调用机制:var 示例详解
  • Linux(CentOS)安装 JDK
  • AI产品经理实战手册:策略、开发与商业化指南
  • 【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用
  • Linux之初体验
  • 现代化水电管理:Spring Boot在大学城的实践
  • 黑马官网2024最新前端就业课V8.5笔记---HTML篇
  • GS-Blur数据集:首个基于3D场景合成的156,209对多样化真实感模糊图像数据集。
  • Linux下Java的多种方式安装
  • Android Studio:connect time out
  • A014-基于Spring Boot的家电销售展示平台设计与实现
  • 数学期望和联合概率密度
  • 萤石私有化设备视频平台EasyCVR视频融合平台如何构建农业综合监控监管系统?
  • 【MongoDB】Windows/Docker 下载安装,MongoDB Compass的基本使用、NoSQL、MongoDB的基础概念及基础用法(超详细)
  • 微信小程序-自定义导航栏