一、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)
完
感谢你看到这里!一起加油吧!