Golang算法题目小计
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] nums[1] = 2 7 = 9
所以返回 [0, 1]
第一种实现:暴力破解法
第二种:利用map时间复杂度O(1)大数据时候更为明显
<pre><code>func Getk(nums []int,val int)[]int{ length := len(nums) mymap := make(map[int]int,length) for i,v := range nums { mymap[v] = i } for i,v := range nums { yu := val - v if k,ok := mymap[yu];ok { return []int{i,k} } } return []int{} } </code></pre>第三种:减少n次遍历
<pre><code>func Getk2(nums []int,val int)[]int{ length := len(nums) mymap := make(map[int]int,length) for i,v := range nums { yu := val-v if vl,ok := mymap[yu];ok{ return []int{vl,i} }else{ mymap[v]=i } } return []int{} } </code></pre> <h2>2、找出不重复最多字符串位数</h2> <pre><code> hello := "abcabbacdaftgsya" ci := 0 jj := 0 mp := make(map[int32]int32) for _,v := range hello{ if _,ok := mp[v];!ok { mp[v]=v ci }else{ mp = make(map[int32]int32) mp[v]=v if ci > jj { jj = ci } ci = 1 } } return ci </code></pre>您可能感兴趣的文章:
数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
Golang算法题目小计
golang 中位数算法
golang runtime 简析
Golang笔记:语法,并发思想,web开发,Go微服务相关
【编程】你问我为什么数组要从零开始?因为我乐意~
计算机基础知识-计算机组成与原理
使用Go语言一段时间的感受
Golang垃圾回收机制
computer go