1、最长无重复字符子串:
解题思路:滑动窗口+哈希表(map)
func lengthOfLongestSubstring(s string) int {
if len(s) == 0 {
return 0
}
// 存储 left~right 中间的字符
set := make(map[byte]bool)
left := 0
set[s[0]] = true
maxLen := 1
for right := 1; right < len(s); {
b := set[s[right]]
if !b {
set[s[right]] = true
right++
} else {
delete(set, s[left])
left++
}
if right-left > maxLen {
maxLen = right - left
}
}
return maxLen
}
2、假设小球距地面的高度是h,每次落地反弹高度是上次的一半,计算第n次落地经过的高度总和
解题思路:等比数列求和
func computPathSum(h float64, n int) {
sum := 0.0
tmp := h
for i := 1; i <= n; i++ {
sum += tmp
tmp = tmp * (0.5)
}
log.Info("高度总和", sum)
}<