算法训练营day27(补),贪心算法1

import "sort"

//455. 分发饼干

func findContentChildren(g []int, s []int) int {

sort.Ints(g)

sort.Ints(s)

// g代表胃口数组, s代表饼干数组

count := 0 // 统计数量

//饼干下标

index := len(s) - 1

// 胃口循环

for i := len(g) - 1; i >= 0; i-- {

if index >= 0 && s[index] >= g[i] {

count++

index--

}

}

return count

}

/*

  1. 摆动序列

本题要考虑三种情况:

情况一:上下坡中有平坡

情况二:数组首尾两端

情况三:单调坡中有平坡

*/

func wiggleMaxLength(nums []int) int {

prev := 0 //前指针

cur := 0 //当前指针

result := 1 //记录峰值个数

for i := 0; i < len(nums)-1; i++ {

cur = nums[i+1] - nums[i]

// 出现峰值

if (prev >= 0 && cur < 0) || (prev <= 0 && cur > 0) {

result++

prev = cur

}

}

return result

}

//53. 最大子数组和

func maxSubArray(nums []int) int {

maxSum := nums[0]

count := 0

for i := 0; i < len(nums); i++ {

count += nums[i]

if count >= maxSum { //取子序列和最大值

maxSum = count

}

if count <= 0 { //当子序列和小于0重置起始位

count = 0

}

}

return maxSum

}

相关推荐
橘颂TA几秒前
【剑斩OFFER】算法的暴力美学——LeetCode 200 题:岛屿数量
算法·leetcode·职场和发展
苦藤新鸡3 分钟前
14.合并区间(1,3)(2,5)=(1,5)
c++·算法·leetcode·动态规划
程序员-King.13 分钟前
day145—递归—二叉树的右视图(LeetCode-199)
算法·leetcode·二叉树·递归
漫随流水17 分钟前
leetcode算法(112.路径总和)
数据结构·算法·leetcode·二叉树
过期的秋刀鱼!24 分钟前
机器学习-带正则化的成本函数-
人工智能·python·深度学习·算法·机器学习·逻辑回归
ScilogyHunter26 分钟前
前馈/反馈控制是什么
算法·控制
_OP_CHEN37 分钟前
【算法基础篇】(四十八)突破 IO 与数值极限:快速读写 +__int128 实战指南
c++·算法·蓝桥杯·算法竞赛·快速读写·高精度算法·acm/icpc
程序员泠零澪回家种桔子41 分钟前
RAG自查询:让AI精准检索的秘密武器
人工智能·后端·算法
企鹅侠客42 分钟前
第24章—数据结构篇:skiplist原理与实现解析
数据结构·skiplist
糖葫芦君1 小时前
TRPO-trust region policy optimization论文讲解
人工智能·算法·机器学习·强化学习