#C++ Day47 Basic Data Structure Chapter3  review-4  January 5 2026

10.数组元素和与数字和的绝对差

2535. 数组元素和与数字和的绝对差

已解答

简单

相关企业

提示

给你一个正整数数组 nums 。

  • 元素和 是 nums 中的所有元素相加求和。
  • 数字和 是 nums 中每一个元素的每一数位(重复数位需多次求和)相加求和。

返回 元素和数字和 的绝对差。

注意:两个整数 x 和 y 的绝对差定义为 |x – y| 。

示例 1:

输入:nums = [1,15,6,3]

输出:9

解释:

nums 的元素和是 1 + 15 + 6 + 3 = 25 。

nums 的数字和是 1 + 1 + 5 + 6 + 3 = 16 。

元素和与数字和的绝对差是 |25 – 16| = 9 。

示例 2:

输入:nums = [1,2,3,4]

输出:0

解释:

nums 的元素和是 1 + 2 + 3 + 4 = 10 。

nums 的数字和是 1 + 2 + 3 + 4 = 10 。

元素和与数字和的绝对差是 |10 – 10| = 0 。

提示:

  • 1 <= nums.length <= 2000
  • 1 <= nums[i] <= 2000

class Solution {

public:

    int differenceOfSum(vector<int>& nums) {

        int x=0,y=0;

        for(int i=0;i<nums.size();i++){

            x += nums[i];

            while(nums[i]){

                y += nums[i] % 10;

                nums[i] /= 10 ;

            }

        }

        return abs(x-y);

    }

};

11. K 个元素的最大和

2656. K 个元素的最大和

简单

相关标签

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次,最大化你的得分:

  1. 从 nums 中选择一个元素 m 。
  2. 将选中的元素 m 从数组中删除。
  3. 将新元素 m + 1 添加到数组中。
  4. 你的得分增加 m 。

请你返回执行以上操作恰好 k 次后的最大得分。

示例 1:

输入:nums = [1,2,3,4,5], k = 3

输出:18

解释:我们需要从 nums 中恰好选择 3 个元素并最大化得分。

第一次选择 5 。和为 5 ,nums = [1,2,3,4,6] 。

第二次选择 6 。和为 6 ,nums = [1,2,3,4,7] 。

第三次选择 7 。和为 5 + 6 + 7 = 18 ,nums = [1,2,3,4,8] 。

所以我们返回 18 。

18 是可以得到的最大答案。

示例 2:

输入:nums = [5,5,5], k = 2

输出:11

解释:我们需要从 nums 中恰好选择 2 个元素并最大化得分。

第一次选择 5 。和为 5 ,nums = [5,5,6] 。

第二次选择 6 。和为 6 ,nums = [5,5,7] 。

所以我们返回 11 。

11 是可以得到的最大答案。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100
  • 1 <= k <= 100

class Solution {

public:

    int maximizeSum(vector<int>& nums, int k) {

        int maxIdx = 0, maxScore=0;

        for(int i=0;i<k;i++){

            for(int i=1;i<nums.size();i++){

                if(nums[i]>nums[maxIdx]){

                    maxIdx = i;

                }

            }

            maxScore += nums[maxIdx];

            nums[maxIdx] += 1;

        }

        return maxScore;

    }

};

class Solution {

public:

    int maximizeSum(vector<int>& nums, int k) {

        int ret=0;

        while(k–){

            int maxIdx=0;

            for(int i = 0;i<nums.size();++i){

                if(nums[i] > nums[maxIdx]){

                    maxIdx = i;

                }

            }

            ret += nums[maxIdx];

            nums[maxIdx] += 1;

        }

        return ret;

    }

};