【golang 必备算法】数组篇
2021/9/24 17:40:36
本文主要是介绍【golang 必备算法】数组篇,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
704. 二分查找
力扣链接
注意边界问题
func search(nums []int, target int) int { r,l,mid:=0,len(nums)-1,(len(nums)-1)/2 for l>=r{ mid = (r+l)/2 if nums[mid]==target{ return mid }else if nums[mid]>target{ l=l-1 }else{ r=r+1 } } return -1 }
27. 移除元素
力扣链接
解法一:
func removeElement(nums []int, val int) int { res:=0 for _,v:=range nums{ if v!=val{ nums[res]=v res++ } } return res }
解法二(双指针):
func removeElement(nums []int, val int) int { i:=0 j:=0 for j<len(nums){ if nums[j]==val{ j++ }else{ nums[i]=nums[j] i++ j++ } } return len(nums)-(j-i) }
977.有序数组的平方
力扣链接
双指针
创建一个和原来数组一样大小的数组res
比较头指针和尾指针指向数的平方和,将大的数存在res[k--]中
func sortedSquares(nums []int) []int { l:=len(nums) res:=make([]int,l) i,j:=0,l-1 k:=j for i<=j{ if nums[i]*nums[i]>=nums[j]*nums[j]{ res[k]= nums[i]*nums[i] i++ }else{ res[k]= nums[j]*nums[j] j-- } k-- } return res }
209.长度最小的子数组
滑动窗口
力扣链接
func minSubArrayLen(s int, nums []int) int { sum:=0 start:=0 end:=0 a:=math.MaxInt32 for end<len(nums){ sum=sum+nums[end] for sum>=s{ sum=sum-nums[start] a=min(a,end-start+1) start++ } end++ } if a==math.MaxInt32{ return 0 }else{ return a } } func min(x int,y int)int{ if x>y{ return y }else{ return x } }
59. 螺旋矩阵 II
力扣链接
func generateMatrix(n int) [][]int { arr:=make([][]int,n) for k,_:=range arr{ arr[k]=make([]int,n) } top, bottom := 0, n-1 left, right := 0, n-1 m:=1 for m<=n*n{ for i:=left;i<=right;i++{ arr[top][i]=m m++ } top++ for i:=top;i<=bottom;i++{ arr[i][right]=m m++ } right-- for i:=right;i>=left;i--{ arr[bottom][i]=m m++ } bottom-- for i:=bottom;i>=top;i--{ arr[i][left]=m m++ } left++ } return arr }
这篇关于【golang 必备算法】数组篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南