文章目录
- 一、拿硬币
- 1、题目链接
- 2、题目简介
- 3、涉及知识点
- 4、分析
- 5、完整解答
- 二、K个元素的最大和
- 1、题目链接
- 2、题目简介
- 3、涉及知识点
- 4、分析
- 5、完整解答
- 三、数组元素和与数字和的绝对差
- 1、题目链接
- 2、题目简介
- 3、涉及知识点
- 4、分析
- 5、完整解答
一、拿硬币
1、题目链接
LCP 06.拿硬币
2、题目简介
桌上有n堆力扣币,每堆的数量保存在数组coins中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
3、涉及知识点
数组、数学、贪心
4、分析
可以分为奇偶;
也可以直接每次向上取整
5、完整解答
class Solution
{
public:int minCount(vector<int> &coins){int res = 0;for (int i = 0; i < coins.size(); i++){res += ((coins[i] + 1) / 2);}return res;}
};
二、K个元素的最大和
1、题目链接
2656.K个元素的最大和
2、题目简介
给你一个下标从0开始的整数数组nums和一个整数k。你需要执行以下操作恰好k 次,最大化你的得分:
- 从nums中选择一个元素m。
- 将选中的元素m从数组中删除。
- 将新元素m + 1添加到数组中。
- 你的得分增加m。
请你返回执行以上操作恰好k次后的最大得分。
3、涉及知识点
数组、贪心
4、分析
第一次遍历选出最大的数,然后等差数列求和
5、完整解答
class Solution
{
public:int maximizeSum(vector<int> &nums, int k){int res = 0;int maxNum = nums[0];for (int i = 1; i < nums.size(); i++){if (nums[i] > maxNum)maxNum = nums[i];}// 等差数列求和res = (maxNum + maxNum + k - 1) * k / 2;return res;}
};
三、数组元素和与数字和的绝对差
1、题目链接
2535.数组元素和与数字和的绝对差
2、题目简介
给你一个正整数数组nums
- 元素和是nums中的所有元素相加求和。
- 数字和是nums中每一个元素的每一数位(重复数位需多次求和)相加求和。
返回元素和与数字和的绝对差。
注意:两个整数x和y的绝对差定义为Ix - yl
3、涉及知识点
数组、数学
4、分析
输入:nums = [1,15,6,3]
输出:9
解释:
nums 的元素和是 1 + 15 + 6 + 3 = 25 。
nums 的数字和是 1 + 1 + 5 + 6 + 3 = 16 。
元素和与数字和的绝对差是 |25 - 16| = 9 。
5、完整解答
class Solution
{
public:int differenceOfSum(vector<int> &nums){int sum1 = 0;int sum2 = 0;for (int i = 0; i < nums.size(); i++){sum1 += nums[i];while (nums[i]){sum2 += (nums[i] % 10);nums[i] /= 10;}}return abs(sum1 - sum2);}
};