题目
给你一个正整数数组 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
方法一
我们看到了nums[i]是1到2000所以这样写就是单纯的就事论事,并不通用
class Solution(object):def differenceOfSum(self, nums):""":type nums: List[int]:rtype: int"""element = 0sum = 0for i in range(len(nums)):sum +=nums[i]element= element+(nums[i]%10)+int(nums[i]/10)%10+int(nums[i]/100)%10+int(nums[i]/1000)return sum-element
方法二
这个方法是看大佬写的,只有一行代码,而且是一个通用的,但是用时没有方法一快
return abs(sum(nums)-sum(map(int, "".join(map(str, nums)))))