标签:return nums int res 必备 golang ++ 算法 func
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
}
标签:return,nums,int,res,必备,golang,++,算法,func 来源: https://www.cnblogs.com/CJ-cooper/p/15331346.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。