前缀和
Lev_i
随便记住我,然后忘了吧
展开
-
1894. 找到需要补充粉笔的学生编号
1894. 找到需要补充粉笔的学生编号贴个题目:贴个示例:在这里插入代码片解题思路:方法一:一次遍历+模拟读完题目我们可以看出,其实就是循环派粉笔给学生,直到学生拿不到足够的粉笔,这时候就返回学生的位置。那么我们可以先求循环一次学生需要多少支粉笔,然后求出派到最后一轮的时候,剩余的粉笔数。最后就遍历一次数组,一边遍历,一边减少粉笔数,什么时候粉笔数是负数的时候,就证明这一个学生不够粉笔派了,此时返回这一个学生的下标即可。优化:我们可以通过取余数来求出最后一轮的时候剩余的粉笔数,这样子原创 2021-09-10 21:48:30 · 123 阅读 · 0 评论 -
1588. 所有奇数长度子数组的和
1588. 所有奇数长度子数组的和贴个题目:贴个示例:解题思路:首先看到题目是计算奇数长度的子数组的总和,因此我们可以通过前缀和的思想来进行求解。具体过程就是:1、首先创建一个长度为arrSize+1的数组nums,nums第一个元素为0,然后求出arr中每一位的前缀和nums[i]=nums[i-1]+arr[i-1];2、紧接着,处理一些特殊情况,我们可以从示例中看出:(1)如果arr长度小于3的时候,只需要返回数组和,因此此时子数组只能由一个元素组成。(2)如果arr长度刚原创 2021-08-29 22:07:25 · 283 阅读 · 0 评论 -
1732. 找到最高海拔
1732. 找到最高海拔贴个题目:贴个示例:解题思路:这道题其实就是利用前缀和的思想,因为是从0海拔开始,因此我们要创建一个新的数组,长度为gainSize+1,模拟自行车手走的每一步之后的海拔高度。贴个代码:int largestAltitude(int* gain, int gainSize){ int arr[gainSize+1]; arr[0]=0; int max=arr[0];//使用max记录最大海拔 for(int i=1;i<gain原创 2021-08-27 10:35:47 · 123 阅读 · 0 评论 -
1480. 一维数组的动态和
1480. 一维数组的动态和贴个题目:贴个示例:解题思路:这一道题很明显就是求这个数组的前缀和,所谓前缀和,就是求当前位置到初始位置的和,由此可以得出:nums[i]=nums[i-1]+nums[i]贴个代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int* runningSum(int* nums, int numsSize, int* returnSize)原创 2021-08-27 10:16:37 · 71 阅读 · 0 评论