1405. 最长快乐字符串
贪心
class Solution:
def longestDiverseString(self, a: int, b: int, c: int) -> str:
ans = []
cnt = [[a, 'a'], [b, 'b'], [c, 'c']]
while True:
cnt.sort(key=lambda x: -x[0])
for i in range(len(cnt)):
if cnt[i][0] <= 0:
continue
if len(ans) >= 2 and ans[-1] == cnt[i][1] and ans[-2] == cnt[i][1]:
continue
ans.append(cnt[i][1])
cnt[i][0] -= 1
break
else:
break
return ''.join(ans)
1985. 找出数组中的第 K 大整数
import heapq
class Solution:
def kthLargestNumber(self, nums: List[str], k: int) -> str:
x = heapq.nlargest(k, nums, key=int)
return str(x[-1])
LCR 112. 矩阵中的最长递增路径
from functools import cache
class Solution:
def __init__(self):
self.m = None
self.n = None
self.matrix = None
def longestIncreasingPath(self, matrix: List[List[int]]) -> int:
self.m = len(matrix)
self.n = len(matrix[0])
self.matrix = matrix
ans = 0
for i in range(self.m):
for j in range(self.n):
tmp = self.dfs(i, j)
if tmp > ans:
ans = tmp
return ans
@cache
def dfs(self, x, y):
ret_ans = 0
ret_ans = max(
max(self.dfs(x + 1, y), ret_ans) if (self.m > x + 1 >= 0 and self.matrix[x + 1][y] > self.matrix[x][y]) else 0,
max(self.dfs(x - 1, y), ret_ans) if (self.m > x - 1 >= 0 and self.matrix[x - 1][y] > self.matrix[x][y]) else 0,
max(self.dfs(x, y + 1), ret_ans) if (self.n > y + 1 >= 0 and self.matrix[x][y + 1] > self.matrix[x][y]) else 0,
max(self.dfs(x, y - 1), ret_ans) if (self.n > y - 1 >= 0 and self.matrix[x][y - 1] > self.matrix[x][y]) else 0,
)
return ret_ans + 1
1424. 对角线遍历 II
class Solution:
def findDiagonalOrder(self, nums: List[List[int]]) -> List[int]:
ans = []
for i in range(len(nums)):
for j in range(len(nums[i])):
ans.append([i + j, j, nums[i][j]])
ans.sort()
return [ans[i][2] for i in range(len(ans))]
2562. 找出数组的串联值
class Solution:
def findTheArrayConcVal(self, nums: List[int]) -> int:
p0 = 0
p1 = len(nums) - 1
ans = 0
while p0 <= p1:
if p0 != p1:
ans += int(str(nums[p0]) + str(nums[p1]))
else:
ans += nums[p0]
p0 += 1
p1 -= 1
return ans
Comments | NOTHING