comments | difficulty | edit_url | rating | source | tags | ||
---|---|---|---|---|---|---|---|
true |
Easy |
1222 |
Weekly Contest 328 Q1 |
|
You are given a positive integer array nums
.
- The element sum is the sum of all the elements in
nums
. - The digit sum is the sum of all the digits (not necessarily distinct) that appear in
nums
.
Return the absolute difference between the element sum and digit sum of nums
.
Note that the absolute difference between two integers x
and y
is defined as |x - y|
.
Example 1:
Input: nums = [1,15,6,3] Output: 9 Explanation: The element sum of nums is 1 + 15 + 6 + 3 = 25. The digit sum of nums is 1 + 1 + 5 + 6 + 3 = 16. The absolute difference between the element sum and digit sum is |25 - 16| = 9.
Example 2:
Input: nums = [1,2,3,4] Output: 0 Explanation: The element sum of nums is 1 + 2 + 3 + 4 = 10. The digit sum of nums is 1 + 2 + 3 + 4 = 10. The absolute difference between the element sum and digit sum is |10 - 10| = 0.
Constraints:
1 <= nums.length <= 2000
1 <= nums[i] <= 2000
Solution 1: Simulation
We traverse the array
The time complexity is
class Solution:
def differenceOfSum(self, nums: List[int]) -> int:
x = y = 0
for v in nums:
x += v
while v:
y += v % 10
v //= 10
return x - y
class Solution {
public int differenceOfSum(int[] nums) {
int x = 0, y = 0;
for (int v : nums) {
x += v;
for (; v > 0; v /= 10) {
y += v % 10;
}
}
return x - y;
}
}
class Solution {
public:
int differenceOfSum(vector<int>& nums) {
int x = 0, y = 0;
for (int v : nums) {
x += v;
for (; v; v /= 10) {
y += v % 10;
}
}
return x - y;
}
};
func differenceOfSum(nums []int) int {
var x, y int
for _, v := range nums {
x += v
for ; v > 0; v /= 10 {
y += v % 10
}
}
return x - y
}
function differenceOfSum(nums: number[]): number {
let [x, y] = [0, 0];
for (let v of nums) {
x += v;
for (; v; v = Math.floor(v / 10)) {
y += v % 10;
}
}
return x - y;
}
impl Solution {
pub fn difference_of_sum(nums: Vec<i32>) -> i32 {
let mut x = 0;
let mut y = 0;
for &v in &nums {
x += v;
let mut num = v;
while num > 0 {
y += num % 10;
num /= 10;
}
}
x - y
}
}
int differenceOfSum(int* nums, int numsSize) {
int x = 0, y = 0;
for (int i = 0; i < numsSize; i++) {
int v = nums[i];
x += v;
while (v > 0) {
y += v % 10;
v /= 10;
}
}
return x - y;
}