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

题目:

示例:

 解析:

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

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

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. LeetCode热题100】【数组第K个大元素

    2024-04-09 09:20:01       46 阅读
  2. LeetCode】586. 订单客户

    2024-04-09 09:20:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 09:20:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 09:20:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 09:20:01       87 阅读
  4. Python语言-面向对象

    2024-04-09 09:20:01       96 阅读

热门阅读

  1. Django中models的使用

    2024-04-09 09:20:01       35 阅读
  2. C++数字化声音信号处理和数控振荡合成

    2024-04-09 09:20:01       40 阅读
  3. react native 图片预览

    2024-04-09 09:20:01       34 阅读
  4. Linux Centos 安装Jenkins

    2024-04-09 09:20:01       37 阅读
  5. linux centos 定时任务,执行shell脚本

    2024-04-09 09:20:01       42 阅读
  6. terraform 阿里云创建ECS使用user_data

    2024-04-09 09:20:01       40 阅读
  7. R语言序列8——RMarkdown与数据报告自动化

    2024-04-09 09:20:01       37 阅读
  8. sqlhc的介绍和使用

    2024-04-09 09:20:01       35 阅读