题目一
leetcode:455
代码与解析一
建议先看这个大佬的视频, 思路很清晰
- 用for循环去控制,如果小孩饼干刚好满足胃口,那么就indexG++, 最后indexS++,不论如何s的索引一定要往下走,
func findContentChildren(g []int, s []int) int{
// 这里必须要排序,保证小胃口对应小饼干,
sort.Ints(s)
sort.Ints(g)
indexS := 0
indexG := 0
res := 0
for indexG<len(g)&&indexS<len(s){
if s[indexS]>=g[indexG]{
res++
indexG++
}
indexS++
}
return res
}
//排序后,局部最优
func findContentChildren(g []int, s []int) int {
sort.Ints(g)
sort.Ints(s)
// 从小到大
child := 0
for sIdx := 0; child < len(g) && sIdx < len(s); sIdx++ {
if s[sIdx] >= g[child] {//如果饼干的大小大于或等于孩子的为空则给与,否则不给予,继续寻找选一个饼干是否符合
child++
}
}
return child
}
题目二
leetcode:376
代码与解析
carl大佬在他的博客讲的很透彻
func wiggleMaxLength(nums []int) int {
if len(nums)<=1{
return len(nums)
}
cur := 0
pre := 0
res := 1
for i:=0;i+1<len(nums);i++{
cur = nums[i+1]- nums[i]
// 如果有正有负则更新下标值||或者只有前一个元素为0(针对两个不等元素的序列也视作摆动序列,且摆动长度为2)
if (cur>0&&pre<=0)||(cur<0&&pre>=0){
res++
pre = cur
}
}
return res
}