Leetcode 3694. Distinct Points Reachable After Substring Removal
- Leetcode 3694. Distinct Points Reachable After Substring Removal
- 1. 解题思路
- 2. 代码实现
- 题目链接:3694. Distinct Points Reachable After Substring Removal
1. 解题思路
这一题思路上就是一个滑动窗口的思路,我们首先计算出终点的位置,然后考察每一个连续长为kkk的窗口的位移改变量,然后减去对应的改动量即可。
2. 代码实现
给出python代码实现如下:
class Solution:def distinctPoints(self, s: str, k: int) -> int:mapping = {"U": [0, 1], "D": [0, -1], "L": [-1, 0], "R": [1, 0]}cord = [0, 0]for ch in s:cord = [x+d for x, d in zip(cord, mapping[ch])]ans = set()delta = [0, 0]for i, ch in enumerate(s):delta = [x+d for x, d in zip(delta, mapping[ch])]if i-k >= 0:delta = [x-d for x, d in zip(delta, mapping[s[i-k]])]if i >= k-1:ans.add((cord[0]-delta[0], cord[1]-delta[1]))return len(ans)
提交代码评测得到:耗时1447ms,占用内存26.8MB。