题目一

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
}
分类: 算法

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1157 天
  • 访问总数:41141 人次

浙公网安备33011302000604

辽ICP备20003309号