教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Golang算法题目小计

Golang算法题目小计

发布时间:2022-02-06   编辑:jiaochengji.com
教程集为您提供Golang算法题目小计等资源,欢迎您收藏本站,我们将为您提供最新的Golang算法题目小计资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h2>1 请符合两数之和的索引</h2>

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

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

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] nums[1] = 2 7 = 9
所以返回 [0, 1]
第一种实现:暴力破解法

<pre><code>func twoSum(nums []int, target int) []int { length := len(nums) for i:=0;i<length;i { for j:=i 1;j<length;j { if t := nums[i] nums[j];t==target{ return []int{i,j} } } } return []int{} } </code></pre>

第二种:利用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算法题目小计”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
Golang算法题目小计
golang 中位数算法
golang runtime 简析
Golang笔记:语法,并发思想,web开发,Go微服务相关
【编程】你问我为什么数组要从零开始?因为我乐意~
计算机基础知识-计算机组成与原理
使用Go语言一段时间的感受
Golang垃圾回收机制
computer go

[关闭]
~ ~