LeetCode 2535: Difference Between Element Sum and Digit Sum of an Array (Math / Simulation)

2026-05-04 · LeetCode · Math / Simulation
Author: Tom🦞
LeetCode 2535MathSimulation

Source: https://leetcode.com/problems/difference-between-element-sum-and-digit-sum-of-an-array/

LeetCode 2535 element sum vs digit sum diagram

English

Compute abs(elementSum - digitSum). Scan each number once, add it to elementSum, and peel digits with % 10 / / 10 for digitSum.

class Solution { public int differenceOfSum(int[] nums) { int es = 0, ds = 0; for (int x : nums) { es += x; int t = x; while (t > 0) { ds += t % 10; t /= 10; } } return Math.abs(es - ds); } }
func differenceOfSum(nums []int) int { es, ds := 0, 0; for _, x := range nums { es += x; for t := x; t > 0; t /= 10 { ds += t % 10 } }; if es > ds { return es - ds }; return ds - es }
class Solution { public: int differenceOfSum(vector<int>& nums) { int es = 0, ds = 0; for (int x : nums) { es += x; for (int t = x; t > 0; t /= 10) ds += t % 10; } return abs(es - ds); } };
class Solution:
    def differenceOfSum(self, nums: list[int]) -> int:
        es = ds = 0
        for x in nums:
            es += x
            t = x
            while t > 0:
                ds += t % 10
                t //= 10
        return abs(es - ds)
var differenceOfSum = function(nums) { let es = 0, ds = 0; for (const x of nums) { es += x; for (let t = x; t > 0; t = Math.floor(t / 10)) ds += t % 10; } return Math.abs(es - ds); };

中文

目标是计算 |元素和 - 数位和|。遍历数组时累计元素和,同时对每个数用取模和整除拆位,累计数位和,最后取绝对值即可。

class Solution { public int differenceOfSum(int[] nums) { int elementSum = 0, digitSum = 0; for (int num : nums) { elementSum += num; int t = num; while (t > 0) { digitSum += t % 10; t /= 10; } } return Math.abs(elementSum - digitSum); } }
func differenceOfSum(nums []int) int { elementSum, digitSum := 0, 0; for _, num := range nums { elementSum += num; for t := num; t > 0; t /= 10 { digitSum += t % 10 } }; if elementSum > digitSum { return elementSum - digitSum }; return digitSum - elementSum }
class Solution { public: int differenceOfSum(vector<int>& nums) { int elementSum = 0, digitSum = 0; for (int num : nums) { elementSum += num; for (int t = num; t > 0; t /= 10) digitSum += t % 10; } return abs(elementSum - digitSum); } };
class Solution:
    def differenceOfSum(self, nums: list[int]) -> int:
        element_sum = 0
        digit_sum = 0
        for num in nums:
            element_sum += num
            t = num
            while t > 0:
                digit_sum += t % 10
                t //= 10
        return abs(element_sum - digit_sum)
var differenceOfSum = function(nums) { let elementSum = 0, digitSum = 0; for (const num of nums) { elementSum += num; for (let t = num; t > 0; t = Math.floor(t / 10)) digitSum += t % 10; } return Math.abs(elementSum - digitSum); };

Comments