/**
* 分配最少糖果问题
* 2021-02-23 20:00-21:30 头条一面
* 只有一个算法题目,现场紧张,有些bug没有调试出来。
* ---------------------------------------------
* 题目介绍:
* 你是学校老师, 有n个学生; 某次考试后, 你让n个学生排成一排,
* 按照他们的分数来给予奖励; 奖励为发送糖果, 每个孩子至少会得到一个糖果;
* 另外如果某个孩子发现他的分数比相邻同学分数高, 但是糖果却不比他们多,
* 便会不开心;你需要用最少的糖果来让所有孩子都开心;
* example1: 分数为 80 90 99 80 70:
* 那糖果最少给1+2+3+2+1 = 9
* example2: 分数为[80,90,99,100,90,80,81]
* 糖果: [1,2,3,4,2,1,2]; 总数15
* example3:[80,0,100]
* 糖果:[2,1,2], 总数5
* example3:[80, 90, 99, 99, 99, 100, 90, 80, 88,88]
* 糖果:[1, 2, 3, 3, 3, 4, 2, 1, 2, 2]; 总数23
* ---------------------------------------------
* 思路分析:
* S1: 创建数组nums,存储每个学生分配的糖果数,均初始化1,保证每个学生至少一块糖果;
* S2: 从左向右遍历:
* if nums[i+1]>nums[i], nums[i+1] = nums[i]+1;
* else if nums[i+1]==nums[i],nums[i+1] = nums[i];
* S3: 从右向左遍历:
* if nums[i]>nums[i+1], nums[i] = nums[i+1]+1;
*
【今日头条】面试题-最少分配糖块问题
最新推荐文章于 2022-12-02 18:38:04 发布