890. Find and Replace Pattern (Medium)
给定一组字符串和一个模式(pattern),返回字符串中所有匹配这个模式的对象。
这里的模式(pattern)描述字母如何重复,即如果模式匹配,那么将模式中的字母替换成映射的字母,就可以还原成目标字符串。
使用字符串映射,或者码表来解决这道题。
给定一组字符串和一个模式(pattern),返回字符串中所有匹配这个模式的对象。
这里的模式(pattern)描述字母如何重复,即如果模式匹配,那么将模式中的字母替换成映射的字母,就可以还原成目标字符串。
使用字符串映射,或者码表来解决这道题。
模棱两可的平面坐标。你需要从一个删除了逗号、空格和小数点的平面坐标中还原它的所有可能的坐标值。
For example, “(1, 3)” becomes s = “(13)” and “(2, 0.5)” becomes s = “(205)”.
结果坐标值不会有多余的前置 0,并且小数点后的数字不会以 0 结尾。还原后的坐标的两个值应该用逗号和一个空格隔开。
我们讨论用正则和回溯算法来解决这道题。
字符串问题。找出匹配子序列(Subsequences)的数量。
子序列(Subsequences)的定义:一个字符串中删除某些字符(也可以不删除字符)之后,字符出现的相对顺序没有被改变,则这个新的字符串称之为原字符串的子序列。
For example, “ace” is a subsequence of “abcde”.
我们用暴力法和桶来解决这道题。
这是一道求最合适路径的题目,根据提示可以应用图论中的 Dijkstra 算法。
Dijkstra‘s Algorithm 适用于求权重不为负数的加权图起点到终点的最优路径。
这道题的 input 是一个 n * n
的矩阵,可以将其视作所有元素都与其上下左右相互连接的一张无向图,每个顶点的数值表示到达这个顶点的边的权重,我们需要求的是从起点 (0, 0)
到终点 (n, n)
的最优路径。这道题要求我们计算的是这条路径上权重最大值,所以我们用一个变量来保持每一次选择后的权重最大值。
开锁游戏。你有一个圆盘锁,锁有 4 个转轮,每个转轮上有 0 ~ 9 共十个数字。
你可以自由转动每个转轮,每次转动一个转轮后它的值会 +1 或 -1,当你从 0 开始转动 -1 后为 9,反之亦然。
你会得到一个死锁列表 deadends
,表示当你转动圆盘锁到这个值的时候游戏结束。你还会得到目标值 target
,你需要在避免遇到死锁的情况下解开圆盘锁,返回操作圆盘锁的最少步骤数,或者返回 -1 表示在已知条件下无法解锁。
爬楼梯游戏。你在爬一段楼梯,你会得到一个 cost
数组记录爬到每一级台阶的消耗。
一旦你付出当前台阶的消耗,你可以选择往上爬一级或两级台阶。另外,你可以选择从第一级台阶或第二级台阶开始游戏。
求爬到顶部的最小消耗。这是一道 DP 应用的简单题目。
字典树题目。实现一个字典根据指定的前缀和后缀来定位单词,如果存在多个单词则返回最大的下标位置,如果不存在单词则返回 -1。
测试 case 中单词最大数量为 15000,查询次数最大为 15000,查询性能不够的话会遇到超时问题。
字符串索引问题是字典树(Trie)的应用场景,我们用字典树来解决这道题。
给定一个尺寸为 m x n
的二进制值的矩阵。定义元素的值为 1
表示土地,元素值为 0
表示海水。
陆地由四边邻接的土地组合而成,陆地的面积是接邻的土地的数量。
求矩阵中的陆地的最大面积,如果不存在陆地则返回 0。
给定两个数 n
和 k
,你需要构建一个数组包含从 1
到 n
的正整数,并且相邻两个数的差组成的数组必须要有 k
个不重复的元素。