2024.3.17力扣刷题记录

一、1374. 生成每种字符都是奇数个的字符串(<=1200)

n为奇数就全为“a”,是偶数就n-1个“a”+一个“b”,代码如下:

class Solution:
    def generateTheString(self, n: int) -> str:
        if n % 2 == 1:
            return 'a'*n
        return 'a'*(n-1)+'b'

二、2710. 移除字符串中的尾随零(<=1200)

1.库函数,学习该库函数知识推荐看文章(http://t.csdnimg.cn/Ar6cL)写得很好。代码如下:

class Solution:
    def removeTrailingZeros(self, num: str) -> str:
        return num.rstrip('0')

2.不使用库函数,遍历求解。删除尾随零可以倒着遍历,代码如下:

class Solution:
    def removeTrailingZeros(self, num: str) -> str:
        # 遍历
        for i in range(len(num)-1,-1,-1):
            if num[i] != '0':
                break
        return num[:i+1]

时间复杂度均为O(n)。

三、2319. 判断矩阵是否是一个 X 矩阵(1200-1400)

坐标满足:主对角线i==j,副对角线i+j==n-1。代码如下:

class Solution:
    def checkXMatrix(self, grid: List[List[int]]) -> bool:
        n = len(grid)
        for i in range(n):
            for j in range(n):
                x = grid[i][j]
                if i == j or i+j == n-1:
                    if x == 0:
                        return False
                else:
                    if x != 0:
                        return False
        return True

一行写法,参考. - 力扣(LeetCode)。代码如下:

class Solution:
    def checkXMatrix(self, grid: List[List[int]]) -> bool:
        # 一行写法 生成器
        return all((i == j or i+j == len(grid)-1)==(x != 0) for i,row in enumerate(grid) for j,x in enumerate(row))

四、1491. 去掉最低工资和最高工资后的工资平均值(1200-1400)

1.排序,时复O(nlogn),空复O(1)。

class Solution:
    def average(self, salary: List[int]) -> float:
        # 排序
        salary.sort()
        n = len(salary)
        return sum(salary[1:n-1]) / (n-2)

 2.遍历,时复O(n),空复O(1)。

class Solution:
    def average(self, salary: List[int]) -> float:
        # 遍历
        max_,min_,sum_ = 0,1000000,0
        for x in salary:
            sum_ += x
            if x < min_:
                min_ = x
            if x > max_:
                max_ = x
        return (sum_-max_-min_) / (len(salary)-2)

感谢你看到这里!一起加油吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值