LeetCode:1491561258

Posted 南岸青栀*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:1491561258相关的知识,希望对你有一定的参考价值。

1491. 去掉最低工资和最高工资后的工资平均值

在这里插入图片描述
在这里插入图片描述

法1:

class Solution:
    def average(self, salary: List[int]) -> float:
        salary.sort()
        salary.pop()
        res = sum(salary[1::])/(len(salary)-1)
        return res

法2:一行python

class Solution:
    def average(self, salary: List[int]) -> float:
        return (sum(salary)-max(salary)-min(salary)) / (len(salary)-2)

561. 数组拆分 I

在这里插入图片描述

法1:排序法

既然寻找两数之间最小值的最大之和。
当然是排序之后两个数的前面一个数

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:
        nums.sort()
        return sum(nums[i*2] for i in range(len(nums)//2))

思路相同,不同写法

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:
        # #不同写法
        nums.sort()
        return sum(nums[::2])

日常python一行

class Solution:
    def arrayPairSum(self, nums: List[int]) -> int:
        #另一种写法
        return sum(sorted(nums)[::2])     

258. 各位相加

在这里插入图片描述

法1:递归,运行结果还不错

class Solution:
    def addDigits(self, num: int) -> int:
        s = 0
        n = str(num)
        for i in n:
            s += int(i)
        if len(str(s)) > 1:
            return self.addDigits(s)
        else:
            return s

在这里插入图片描述
既然能递归一定能迭代

法2:迭代

class Solution:
    def addDigits(self, num: int) -> int:
        #法2迭代
        n = str(num)
        while True:
            s = 0
            for i in n:
                s += int(i)
            if len(str(s)) <= 1:
                return s
            else:
                n = str(s)

在这里插入图片描述

进阶

O(1) 数学推理:设某个数字的字符串表示为’abc’,则这个数字代表a*100 + b*10 + c,转换后成为a + b + c,可见每次转换相当于把原数字减去a*99 + b*9 = 9 * (a*11 + b),可以推出只要高于个位的位置上有数字,算法就会减去一个小于原数字的9的倍数,这就相当于数字 % 9。但9 % 9 = 0,而 9 本身就没有十位,因此需要考虑原数字是 0 或 9 的倍数的特殊情况

首先计算num % 9,若结果为 0 则考虑num本身是否为 0,若不为 0 返回 9

class Solution:
    def addDigits(self, num: int) -> int:
        #进阶
        return num % 9 or 9 * bool(num)

补充:

在这里插入图片描述

以上是关于LeetCode:1491561258的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数