相关信息
接雨水,这道题最大的问题在于理解怎么才能接到雨水
接雨水其实就是看当前位置的左右是否存在格挡,存在格挡可以存雨水,能存放的最大容积为左右出现的格挡的最大高度
第一步 声明变量初始值 left right maxLeft Maxleft res
第二步 从左右两边开始对比: for left < right {}
第三步 if height[left] < height[right] 则处理左边,否则处理右边
第四步 处理左边 如果当前位置(left)大于等于 maxLeft 则更新maxLeft 否则说明左边的高度是超出当前位置的,可以进行容积增加: maxLeft - height[left]
右边的逻辑和左边一样,发现右边的格挡更高,则增加高度差,否则更新高度最大值(当前值比maxRight更大)
jsfunc trap(height []int) int {
left, right := 0, len(height)-1
leftMax, rightMax := 0, 0
res := 0
for left < right {
if height[left] < height[right] {
if height[left] >= leftMax {
leftMax = height[left]
} else {
res += leftMax - height[left]
}
left++
} else {
if height[right] >= rightMax {
rightMax = height[right]
} else {
res += rightMax - height[right]
}
right--
}
}
return res
}
相关信息
golang实现交替打印数字字母
该题的关键在意通过channel进行控制
相关信息
golang基础学习
go ①可以用==比较
②不可以通过下标的方式改变某个字符,字符串是只读的
③不能和nil比较
jsarray := [...]int{1,2,3,9:34} 表示array[9]==34 则len(array)就是10
js
js不包含任何字段的结构体叫做空结构体 struct{}
定义:
var et struct{}
et := struct{}{}
type ets struct {} / et := ets{} / var et ets
特性:
* 所有的空结构体的地址都是同一地址,都是zerobase的地址,且大小为0
使用场景:
* 用于保存不重复的元素的集合,Go的map的key是不允许重复的,用空结构体作为value,不占用额外空间。
* 用于channel中信号传输,当我们不在乎传输的信号的内容的时候,只是说只要用信号过来,通知到了就行的时候,用空结构体作为channel的类型
* 作为方法的接收者,然后该空结构体内嵌到其他结构体,实现继承