1、第一题,给定一个字符串 s,包含以下字符:(,), <, > 和 *。其中字符 * 可以变换成 ), > 中的任意一个右括号。判断字符串是否有效解题思路:简单模拟题,直接用栈进行模拟即可2、 第二题,给定一个字符串 s 和一个整数 k,s 由大小写字母和数字组成,请找出 s 的一个最长连续子串,使得这个子串中的大小写字母的出现次数都不超过 k。输出这个子串的长度。解题思路:典型的滑动窗口问题, 我们可以用两个指针,`left` 和 `right`,来定义一个“窗口”,即子串 `s[left...right]`3、第三题,给定一棵二叉树,每个节点包含一个整数数值(可正可负)。请计算从根节点到叶子节点的所有路径中,路径上所有节点值的乘积为完全平方数的路径数量。完全平方数是指可以表示为某个整数的平方的数,例如 1、4、9、16 等。注意:0 也是完全平方数(0=02),负数不能是完全平方数。解题思路:我们需要先将输入的字符串解析成一棵二叉树,然后通过深度优先搜索(DFS)遍历所有从根到叶子的路径,计算路径上节点值的乘积,并判断该乘积是否为完全平方数4、第四题,勇者小明被困在一座 m 行 n 列的地牢中,地牢的每个房间 (i,j) 都标注了 “进入成本”(单位:金币)—— 进入该房间需消耗对应数量的金币。小明的初始位置是地牢左上角的房间 (0,0),目标是到达右下角的宝藏房间 (m - 1,n - 1),并尽可能减少金币消耗。解题思路:能知道这道题是一个典型的在网格中寻找最短路径的问题 , 但增加了“传送”这一特殊移动方式, 使得问题变得更加复杂了。所以我们常规的动态规划(DP)或者简单的广度优先搜索(BFS)无法直接解决,因为状态不仅与当前位置 `(r, c)` 有关,还与剩余的传送次数 `k` 有关。那么这是一个带有非负权重边的最短路径问题,最适合使用 Dijkstra 算法。