📜  计算数字与数字总和之差大于特定值的数字(1)

📅  最后修改于: 2023-12-03 14:57:30.983000             🧑  作者: Mango

题目描述

编写一个函数,计算一个数组中数字与数字总和之差大于特定值的数字。

函数签名
def calculate_diff(arr: List[int], diff_val: int) -> List[int]:
输入参数
  • arr:一个由整数组成的数组,长度在1到10 ^ 5之间。
  • diff_val:特定值,整数类型。
输出
  • 返回由数字与数字总和之差大于特定值的数字组成的数组。
示例
assert calculate_diff([1,2,3,4,5], 2) == [4,5]
assert calculate_diff([2,3,4,5], 2) == [4,5]
assert calculate_diff([1,2,3,4,5], 20) == []
解题思路
  1. 遍历数组,计算数组的总和 arr_sum
  2. 再次遍历数组,计算当前数字与数组总和之差 diff,如果 diff 大于特定值 diff_val,则将这个数字添加到结果数组中。
  3. 返回结果数组。
解题代码
from typing import List

def calculate_diff(arr: List[int], diff_val: int) -> List[int]:
    arr_sum = sum(arr)
    res = []
    for num in arr:
        diff = abs(arr_sum - num*len(arr)) # 计算数字与数字总和之差
        if diff > diff_val:
            res.append(num)
    return res

解题说明:

以上面代码为例,arr_sum - num*len(arr) 的意思是数字总和 arr_sum 减去所有数字之和,即为去掉当前数字后的数字总和,差值即为此数字与数字总和之差 diff。注意,因为我们并不知道当前数字是在数组中出现的几次,所以需要将数字的总和 arr_sum 减去当前数字的数量 num*len(arr)。最后返回结果数组 res 即可。