题目
问题描述:
给你一个正整数数组 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 sum1=0,sum2=0;for(int &x:nums){sum1+=x;while(x){sum2+=x%10;x/=10;}}return abs(sum1-sum2);}
};