[代码随想录]Day27-贪心算法part01

题目:455. 分发饼干

思路:

贪心,思路是尽量先给胃口值小的分,饼干也是从小的开始分:

  1. 如果饼干满足了胃口值,结果+1换下一个人,下一个饼干
  2. 如果饼干满足不了胃口值,换下一个饼干(满足不了胃口值小的一定满足不了大的)

代码:

func findContentChildren(g []int, s []int) int {
    res := 0
    sort.Ints(g)
    sort.Ints(s)
    leng, lens := len(g), len(s)
    for i, j :=0, 0; i < lens&& j < leng; i++ {
        if s[i] >= g[j] {
            j++
            res++
        }
    }
    return res
}

参考:

代码随想录

题目:376. 摆动序列

思路:

大小转换成折线,要的就是起伏,也就是说找三个数,如果是单调的就删除中间多余的。
image.png

代码:

func wiggleMaxLength(nums []int) int {
    lens := len(nums)
    if lens < 2 {
        return lens
    }
    res := 1
    pre := nums[1] - nums[0]
    if pre != 0 {
        res = 2
    }
    for i := 2; i < lens; i++ {
        now := nums[i] - nums[i-1] 
        if now > 0 && pre <= 0 || now < 0 && pre >= 0 { //
            res ++
            pre = now
        } 
    }
    return res
}

参考:

代码随想录

题目:53. 最大子序和

思路:

以前就做过的题,因为是需要连续,就直接遍历就可以了:

  1. 首先sum加上当前的数,然后判断一次max
  2. 如果当前的sum小于0,直接把当前舍弃掉,sum = 0,因为这一段范围对后面带来的只有负面影响

代码:

func maxSubArray(nums []int) int {
    res, sum := math.MinInt32, 0
    for _, x := range nums {
        sum += x
        res = max(sum, res)
        if sum < 0 {
            sum = 0 
            continue
        }  
    }
    return res
}

func max(a,b int) int {
    if a > b {
        return a
    }
    return b
}

参考:

代码随想录

posted @   WtcSky  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示