LeetCode 2535: Difference Between Element Sum and Digit Sum of an Array (Math / Simulation)
LeetCode 2535MathSimulationSource: https://leetcode.com/problems/difference-between-element-sum-and-digit-sum-of-an-array/
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