Leetcode 3694. Distinct Points Reachable After Substring Removal

  • [Leetcode 3694. Distinct Points Reachable After Substring Removal](#Leetcode 3694. Distinct Points Reachable After Substring Removal)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题思路上就是一个滑动窗口的思路,我们首先计算出终点的位置,然后考察每一个连续长为 k k k的窗口的位移改变量,然后减去对应的改动量即可。

2. 代码实现

给出python代码实现如下:

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。

相关推荐
yi01119 天前
LeetCode 424. 替换后的最长重复字符|不定长滑动窗口:如何判断窗口是否合法?
笔记·python·算法·leetcode·双指针·滑动窗口
yi01119 天前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
yi01120 天前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
longlongzihan23 天前
LeetCode 76. 最小覆盖子串:滑动窗口算法详解
算法·leetcode·滑动窗口
longlongzihan1 个月前
LeetCode 1004.最大连续1的个数III 滑动窗口及动态规划题解
c++·算法·leetcode·dp·滑动窗口
Logic1011 个月前
C语言/数据结构滑动窗口题解:替换k个字符后的最长连续相同字符子串(LeetCode 424)
c语言·数据结构·字符串·滑动窗口·时间复杂度·频率统计·算法题
Tisfy1 个月前
LeetCode 1477.找两个和为目标值且不重叠的子数组:滑动窗口 + 记录前值(动态规划)
动态规划·题解·dp·滑动窗口
a187927218311 个月前
【算法】双指针与滑动窗口(三):相向双指针——比较、排除、收缩
算法·leetcode·双指针·滑动窗口·原理·相向双指针·算法讲解
a187927218312 个月前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解
Evand J2 个月前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波