内容简介:第一种方法就是便利数组,随着数组长度增加,执行时间指数型增加。第二种方式是以空间换时间,把数据存在哈希表里面,最多只用完全遍历一次数组,就能得到结果。题目链接:
没事的时候打算开始玩一玩leetcode,不然天天写代码,却对算法没啥认识还是有点尴尬的。虽说是做题,其实大部分就是为了看看别人牛逼的思路。尽量每天一题把~
1.两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
第一种方法就是便利数组,随着数组长度增加,执行时间指数型增加。
#时间复杂度:O(n^2)
#空间复杂度:O(1)
func twoSum(nums []int, target int) []int {
for firstIndex,firstNum := range nums{
for secondIndex,secondNum := range nums{
if firstIndex != secondIndex && firstNum + secondNum == target{
return []int{firstIndex, secondIndex}
}
}
}
return nil
}
第二种方式是以空间换时间,把数据存在哈希表里面,最多只用完全遍历一次数组,就能得到结果。
#时间复杂度:O(n)
#空间复杂度:O(n)
func twoSumHash(nums []int, target int) []int {
m := make(map[int]int)
for index,num := range nums{
i,ok := m[target - num]
if ok {
return []int{i,index}
}
m[num] = index
}
return nil
}
题目链接: https://leetcode-cn.com/problems/two-sum/description/
作为脑子是条直线的小白,解题的方法是第一种,打死估计都想不到第二种把。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 新提交记录暗示:Fuchsia 要支持 Java 语言了?
- 阅《汇编语言》记录的小结笔记及练习题(一)
- 记录一次vue练习的填坑记录
- 【错误记录】git ssh 推送失败的一次记录
- node日志记录
- node日志记录
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员2010精华本
程序员杂志社 / 电子工业 / 2011-1 / 49.00元
《程序员(2010精华本)》主要内容:《程序员》创刊10年来,每年末编辑部精心打造的“合订本”已经形成一个品牌,得到广大读者的认可和喜爱。今年,《程序员》杂志内容再次进行了优化整合,除了每期推出的一个大型专题策划,各版块也纷纷以专题、策划的形式,将每月的重点进行了整合,让内容非常具有凝聚力,如专题篇、人物篇、实践篇等。另外杂志的版式、色彩方面也有了很大的飞跃,给读者带来耳目一新的阅读体验。一起来看看 《程序员2010精华本》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
HEX HSV 转换工具
HEX HSV 互换工具