/**
* 分配最少糖果问题
* 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-10-07 16:13:09 发布
这篇博客探讨了在面试中常见的算法题——最少分配糖块问题。文章提供了两种解决方案,分别是方法1和方法2,它们的时间复杂度都是O(N^2)。通过具体的例子,如不同分数对应的糖果数分配,解释了解题思路,如分数为[80, 90, 99, 80, 70]时,糖果数为[1, 2, 3, 2, 1],总糖果数为9,展示了如何确保公平分配的同时尽量减少总的糖果数量。"
138564195,9078080,C/C++ 实现快速傅里叶变换(FFT)算法详解,"['算法', 'C语言', 'C++', '数据结构', '信号处理']
摘要由CSDN通过智能技术生成