【LetMeFly】2535.数组元素和与数字和的绝对差:模拟 力扣题目链接:https://leetcode.cn/problems/difference-between-element-sum-and-digit-sum-of-an-array/
给你一个正整数数组 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
解题方法:模拟 写一个函数getSum(x)
返回整数x
在十进制下的每位之和:
1 2 3 4 5 6 7 8 int getSum (int x) { int ans = 0 ; while (x > 0 ) { ans += x % 10 ; x /= 10 ; } return ans; }
使用两个变量x
和y
分别记录元素之和和元素每一位之和,遍历一遍原始数组即可得到这个值。
最终,返回abs(x - y)
即为答案。
时间复杂度$O(len(nums)\times \log M)$,其中$M$是$nums[i]$可取值范围的最大值$2000$。
空间复杂度$O(1)$
AC代码 C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution {private : int getSum (int n) { int ans = 0 ; while (n) { ans += n % 10 ; n /= 10 ; } return ans; }public : int differenceOfSum (vector<int >& nums) { int x = 0 , y = 0 ; for (int t : nums) { x += t, y += getSum (t); } return abs (x - y); } };
Go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package mainfunc abs (x int ) int { if x >= 0 { return x } return -x }func getSum (x int ) int { ans := 0 for x > 0 { ans += x % 10 x /= 10 } return ans }func differenceOfSum (nums []int ) int { x, y := 0 , 0 for _, t := range nums { x += t y += getSum(t) } return abs(x - y) }
Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { private int getSum (int t) { int ans = 0 ; while (t > 0 ) { ans += t % 10 ; t /= 10 ; } return ans; } public int differenceOfSum (int [] nums) { int x = 0 , y = 0 ; for (int t : nums) { x += t; y += getSum(t); } return Math.abs(x - y); } }
Python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from typing import List class Solution : def getSum (self, x: int ) -> int : ans = 0 while x: ans += x % 10 x //= 10 return ans def differenceOfSum (self, nums: List [int ] ) -> int : x = y = 0 for t in nums: x += t y += self .getSum(t) return abs (x - y)
同步发文于CSDN和我的个人博客 ,原创不易,转载经作者同意后请附上原文链接 哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/142568318