LeetCode_从数量最多的堆取走礼物[2558]

题目:

示例:

解析:

先说说我自己的解法。看到题目描述我就觉得要用递归,我们可以先来一个if语句界定终止递归的条件,就是k==0的时候。我们把这时候gifts指针指向的数组求和并返回。

之后就是想办法解决开平方根,和在哪个数上开平方根。我们可以用一个函数sqrt来实现,在VS中包含math.h头文件就可以使用此函数了。之后我们要得出数组中最大值的下标,定义一个max=0,用for循环遍历数组,如果数组里面的数大于max,将这个数赋给max、并且记录下标。for循环完成后我们就可以得到最大数的下标了。将其开平方并返回pickGifts(gifts, giftsSize, --k);就行了。

cpp 复制代码
long long pickGifts(int* gifts, int giftsSize, int k)
{
	if (k == 0)
	{
		long long sum = 0;
		for (int i = 0; i < giftsSize; i++)
		{
			sum += *(gifts + i);
		}
		return sum;
	}
	else
	{
		long long pos;
		long long max = 0;
		for (int i = 0; i < giftsSize; i++)
		{
			if (*(gifts + i) > max)
			{
				max = *(gifts + i);
				pos = i;
			}
		}
		*(gifts + pos) = (long long)sqrt(*(gifts + pos));
		return pickGifts(gifts, giftsSize, --k);
	}
}

官方解法是用的堆,这里我还没学到,等我学到后面再来更新把。

本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!

相关推荐
智者知已应修善业1 分钟前
【输入矩阵将其按副对角线交换后输出】2024-11-27
c语言·c++·经验分享·笔记·线性代数·算法·矩阵
wuqingshun3141592 分钟前
蓝桥杯 魔法蘑菇
职场和发展·蓝桥杯
17(无规则自律)6 分钟前
C++ 链表修炼指南
数据结构·c++·算法·leetcode·链表
z20348315206 分钟前
17届蓝桥杯嵌入式赛道开发板外设使用教程——按键、蜂鸣器、LCD屏幕
mongodb·职场和发展·蓝桥杯
KhalilRuan6 分钟前
基于OpenGL实现布料模拟
算法
大江东去浪淘尽千古风流人物8 分钟前
【claw】 OpenClaw 的架构设计探索
深度学习·算法·3d·机器人·slam
闻缺陷则喜何志丹8 分钟前
【字典树 回溯】P7210 [COCI 2020/2021 #3] Vlak|普及+
c++·算法·字典树·回溯·洛谷
夏玉林的学习之路9 分钟前
委托构造和using关键字
开发语言·c++·算法
small-pudding10 分钟前
深入理解PDF:蒙特卡洛光线追踪中的概率密度函数
算法·pdf·图形渲染
We་ct12 分钟前
LeetCode 46. 全排列:深度解析+代码拆解
前端·数据结构·算法·leetcode·typescript·深度优先·回溯