首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
分糖果问题
[编程题]分糖果问题
热度指数:66859
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:
1. 每个孩子不管得分多少,起码分到一个糖果。
2. 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)
给定一个数组
代表得分数组,请返回最少需要多少糖果。
要求: 时间复杂度为
空间复杂度为
数据范围:
,
示例1
输入
[1,1,2]
输出
4
说明
最优分配方案为1,1,2
示例2
输入
[1,1,1]
输出
3
说明
最优分配方案是1,1,1
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(616)
分享
提交结果有问题?
86个回答
87篇题解
开通博客
牛客题解官
发表于 2022-04-22 13:07:54
精华题解
题目主要信息: 给定一个数组,每个元素代表孩子的得分,每个孩子至少分得一个糖果 相邻两个位置得分高的要比得分低的分得多,得分相同没有限制 求最少总共需要多少糖果数 举一反三: 学习完本题的思路你可以解决如下题目: BM89. 合并区间 BM96. 主持人调度 方法:贪心算法(推荐使用) 知识点:
展开全文
LifelongCode
发表于 2021-02-05 16:08:47
解法1:左右各遍历一次 把所有孩子的糖果数初始化为 1; 先从左往右遍历一遍,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的 糖果数加 1; 再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖
展开全文
牛客500979850号
发表于 2021-07-26 18:30:30
题意: 给定一个数组,每一个数组元素对应另外一个数组值,求另外一个数组值的总和。 要求:每一个数组对应的值不小于1;任意两个相邻的数组元素,大的数组元素对应的值更大,相同无限制。 方法一:贪心 题目主要的难点是在于实现“任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果”,因此我们利用贪心
展开全文
牛客516598323号
发表于 2020-09-17 11:25:16
由于增加是有最优化的1,而减少趋向无穷;分成两个小问题,第一步顺序遍历arr数组,如果要求递增,则ans数组下一个比当前大1.第二步逆序遍历arr数组,如果要求递增且ans数组不符合要求,则ans数组上一个比当前大1.用例通过率: 100.00% 运行时间: 987ms 占用内存: 16832KB。
展开全文
认认真真coding
发表于 2022-01-30 15:51:30
分糖果问题 1、题意重述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果。 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制) 给定一个数组 arrarr 代表得分数组,请返回最少需要多少糖果。 换句话说,就是每个孩子必
展开全文
fred-coder
发表于 2022-01-02 17:00:15
贪心,根据当前孩子的左右两侧分数比较得到孩子应该得到的糖果,由于要符合两侧的要求取较大值 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # pick candy # @param arr int整型一维数组 the array # @return int整型
展开全文
有名
发表于 2021-07-30 21:48:17
描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果。 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)给定一个数组arr代表得分数组,请返回最少需要多少糖果。[要求]时间复杂度为, 空间复杂度为 方法一 思路 数组
展开全文
2019113916
发表于 2021-12-07 21:56:42
题意概述 给定一个得分数组,按照该数组给孩子分糖果 满足下列两个要求 每个孩子不管得分多少,起码分到一个糖果。 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制) 问最少需要多少糖果。 方法一:两次遍历 思路与具体做法 因为相邻的得分高的孩子要多拿一些糖果,所以对于每个
展开全文
神奇.瀚
发表于 2021-02-06 21:00:31
视频链接:https://www.bilibili.com/video/BV1uz4y1U71X/左右各遍历一次。 import java.util.*; public class Solution { /** * pick candy * @param arr in
展开全文
HovingHuang
发表于 2022-05-08 14:11:42
/** * 解法:贪心 * 思路: * 要想分出最少的糖果,利用贪心思想,肯定是相邻位置没有增加的情况下大家都分到1, * 相邻位置有增加的情况下,分到糖果数加1就好。什么情况下会增加糖果,相邻位置有得 * 分差异,可能是递增可能是递减,如果是递增的话,糖果依次加1,如果是递
展开全文
bug鲨我
发表于 2022-03-28 15:08:30
``` 贪婪算法 /** * pick candy * @param arr int整型一维数组 the array * @param arrLen int arr数组长度 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 * * C语言
展开全文
问题信息
贪心
难度:
86条回答
616收藏
5982浏览
热门推荐
通过挑战的用户
牛客89631...
2023-03-13 22:26:34
安静的沸羊羊希望被捞
2023-02-18 17:25:08
譞
2023-01-07 16:43:26
幸运的打工人一...
2022-11-14 23:16:30
ITGuoKe
2022-10-31 10:54:27
相关试题
求序列里最长的非降序列 例如:输...
百度
贪心
评论
(12)
下面使用贪心算法的是?
阿里巴巴
贪心
评论
(1)
编程题 ,按照要求创建Java 应...
Java
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
分糖果问题
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ public int candy (int[] arr) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型vector the array * @return int整型 */ int candy(vector
& arr) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # pick candy # @param arr int整型一维数组 the array # @return int整型 # class Solution: def candy(self , arr ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ public int candy (List
arr) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ function candy( arr ) { // write code here } module.exports = { candy : candy };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # pick candy # @param arr int整型一维数组 the array # @return int整型 # class Solution: def candy(self , arr: List[int]) -> int: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ func candy( arr []int ) int { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @param arrLen int arr数组长度 * @return int整型 */ int candy(int* arr, int arrLen ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # pick candy # @param arr int整型一维数组 the array # @return int整型 # class Solution def candy(arr) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ def candy(arr: Array[Int]): Int = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ fun candy(arr: IntArray): Int { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ public int candy (int[] arr) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ export function candy(arr: number[]): number { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ func candy ( _ arr: [Int]) -> Int { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * pick candy * @param arr int整型一维数组 the array * @return int整型 */ pub fn candy(&self, arr: Vec
) -> i32 { // write code here } }
[1,1,2]
4
[1,1,1]
3