【Leetcode解題】2535. Difference Between Element Sum and Digit Sum of an Array
題目
- 題目連結
- 目標函式 :
differenceOfSum(nums)- Input :
nums: List[int] - Output :
int
- Input :
解題概念
- 題意 : 給予一陣列
nums,計算出其 Element sum 與 Digit sum,並回傳兩者的絕對差- Element sum :
nums中所有元素的總和 - Digit sum : 出現在
nums之所有 digits 的總和
- Element sum :
我的寫法
- 想法 :
- 針對
nums的每筆數字,計算每個數字取其 Digit sum 的絕對差值,最後加總起來即為解答
- 針對
- 程式碼 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22def check(self, n): # 計算數字 n 的 Digit sum
res = 0
while n != 0:
res += (n % 10)
n = n // 10
return res
def differenceOfSum(self, nums):
final = 0
# 針對 nums 的每筆數字
for i in range(len(nums)):
t1 = nums[i] # t1 為數字本身
t2 = self.check(nums[i]) # t2 為該數字的 Digit sum
# 計算該數字的絕對差值
res = t1 - t2
if res < 0:
res *= (-1)
final += res
return final - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
解答 or 其他優秀寫法
- 想法 :
- 與我的算法類似,但主要差在它事先計算出整體的 Element sum 與 Digit sum ,最後再回傳兩者的絕對差值
- 程式碼 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15def differenceOfSum(self, nums):
dsum = 0 # 整體的 Digit sum
esum = 0 # 整體的 Element sum
# 針對 nums 的每筆數字
for i in range(len(nums)):
# 處理 Element sum
esum += n
# 處理 Digit sum
while n > 0:
dsum += n % 10
n = n // 10
return abs(esum - dsum) - 成效 :
- Time Complexity : $\color{DB4D6D}{O(n)}$
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


