Day31 Golang (贪心算法)455.分发饼干 376. 摆动序列 53. 最大子序和

本文介绍了三个Go语言函数:findContentChildren用于解决孩子胃口问题,wiggleMaxLength计算数组的最大波幅,maxSubArray则求解连续子数组的最大和。这些是IT技术中常见的数组操作和算法实现示例。
摘要由CSDN通过智能技术生成
func findContentChildren(g []int, s []int) int {
	//注意首先从小到大排序
	sort.Ints(g)
	sort.Ints(s)
	res := 0
	index := len(s) - 1
	for i := len(g) - 1; i >= 0; i-- { //外层循环遍历孩子的胃口
		if index >= 0 && s[index] >= g[i] { //一个饼干只能投喂一次不能用while
			index--
			res++
		}
	}
	return res

}
func wiggleMaxLength(nums []int) int {
	if len(nums) == 1 {
		return 1
	}
	prediff := 0
	curdiff := 0
	res := 1 //解决只有首尾两个元素的情形
	for i := 0; i < len(nums)-1; i++ {
		curdiff = nums[i+1] - nums[i]
		if prediff >= 0 && curdiff < 0 || prediff <= 0 && curdiff > 0 { //解决上下有平坡的情形
			res++             //记录波动
			prediff = curdiff //解决单调坡中有平坡的情形
		}
	}
    return res

}
func maxSubArray(nums []int) int {
	res := math.MinInt64//取最小的数
	count := 0 //记录连续和
	for i := 0; i < len(nums); i++ {
		count += nums[i]
		if count > res {
			res = count
		}
		if count < 0 { //当连续和小于0时重新计数
			count = 0
		}
	}
	return res
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值