芜湖市网站建设_网站建设公司_安全防护_seo优化
2026/1/16 12:17:58 网站建设 项目流程

打卡第六十八天
3道简单题
image

题目:
image

思路:
image

代码:

class Solution {
public:long long pickGifts(vector<int>& gifts, int k) {int n = gifts.size();for (int i = n/2 - 1; i >= 0; i--) {heapify(gifts, n, i);}for (int i = 0; i < k && gifts[0] > 1; i++) {int maxVal = gifts[0];      // 堆顶就是最大值int newVal = sqrt(maxVal);  // 计算平方根gifts[0] = newVal;          // 替换堆顶heapify(gifts, n, 0);       // 从堆顶开始调整}long long sum = 0;for (int val : gifts) {sum += val;}return sum;}private:void heapify(vector<int>& arr, int n, int i) {int largest = i;        // 假设当前节点最大int left = 2 * i + 1;   // 左子节点int right = 2 * i + 2;  // 右子节点if (left < n && arr[left] > arr[largest]) {// 左子节点存在且比当前节点大largest = left;}if (right < n && arr[right] > arr[largest]) {// 右子节点存在且比当前节点大largest = right;}if (largest != i) {// 如果最大值不是当前节点,交换并继续堆化swap(arr[i], arr[largest]);  // 交换heapify(arr, n, largest);    // 递归调整}}
};

耗时≈一小时 明天继续

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询