给出题目一的试题链接如下:
这一题只需要对source字符串以及target字符串进行一下字符统计,然后看一下target当中的字符分别在source当中最多有几组即可。
给出python代码实现如下:
class Solution:
def rearrangeCharacters(self, s: str, target: str) -> int:
cnt = Counter(s)
res = math.inf
for k,v in Counter(target).items():
res = min(cnt[k] // v, res)
return res
提交代码评测得到:耗时31ms,占用内存13.8MB。
给出题目二的试题链接如下:
这一题只需要对单词当中价格的部分进行识别,然后进行价格转换即可。
给出python代码实现如下:
class Solution:
def discountPrices(self, sentence: str, discount: int) -> str:
def is_price(w):
return re.match(r"^\$\d+\.?\d*$", w)
def fn(w):
if is_price(w):
return "$" + "{:.2f}".format(float(w[1:]) * (100 - discount) / 100)
else:
return w
s = [fn(w) for w in sentence.split()]
return " ".join(s)
提交代码评测得到:耗时385ms,占用内存16.7MB。
给出题目三的试题链接如下:
这一题坦率地说我没有搞定,思路上来说也没有一个很清晰的思路,整体来说知道是要用一个有序数组这个还是知道的,不过具体怎么自适应的调整到这道题当中却始终想不明白,所以这里就不多做说明了,仅仅是翻译了一下排行榜上的大佬的code。
给出翻译后的python代码如下:
class Solution:
def totalSteps(self, nums: List[int]) -> int:
res = 0
s = []
n = len(nums)
l = 0
for i in nums[::-1]:
depth = 0
while s != [] and i > s[-1][0]:
prev, prev_depth = s.pop()
depth += 1 + max(prev_depth - depth - 1, 0)
res = max(res, depth)
s.append((i, depth))
return res
提交代码评测得到:耗时1193ms,占用内存29.1MB。
给出题目四的试题链接如下:
这一题同样的只是翻译了一下排行榜上面大佬的code,所以就不在这里班门弄斧了,有兴趣的读者可以自行看一下code,这题的code事实上倒是不难懂……
给出python代码实现如下:
class Solution:
def minimumObstacles(self, grid: List[List[int]]) -> int:
n, m = len(grid), len(grid[0])
distance = [[math.inf for _ in range(m)] for _ in range(n)]
distance[0][0] = 0
q = [(0, 0)]
def inside(x, y):
return 0 <= x < n and 0 <= y < m
while q:
x0, y0 = q.pop(0)
for x, y in [(x0-1, y0), (x0+1, y0), (x0, y0-1), (x0, y0+1)]:
if not inside(x, y):
continue
if distance[x][y] > distance[x0][y0] + grid[x][y]:
distance[x][y] = distance[x0][y0] + grid[x][y]
if grid[x][y]:
q.append((x, y))
else:
q.insert(0, (x, y))
return distance[-1][-1]
提交代码评测得到:耗时8747ms,占用内存40MB。