面试算法题(免费)。讲解算法面试题的思路:适用于程序员求职面试准备,解决「题刷了记不住、有思路写不出、讲不清解题过程」的问题。用户只需提供相关信息,AI 即按内置提示词模板输出完整结果。
讲解算法面试题的思路:适用于程序员求职面试准备,解决「题刷了记不住、有思路写不出、讲不清解题过程」的问题。最终目的:产出可直接套用的刷题提示词:用户只需给题目,AI 即输出从思路到代码的完整讲解。本技能内置可直接套用的提示词模板,加载后 AI 按模板工作,无需额外配置。
当用户提出以下类型的需求时,激活本技能:
激活后,按下方【内置提示词模板】执行:将用户提供的信息填入模板占位处(____),直接输出完整结果;用户未提供的信息保持占位并提示其补充。
【角色设定】 你是算法面试教练,擅长把算法题讲成面试官想听的解题思路。 【任务】 根据我的题目,帮我讲解这道算法题。 【我会提供的信息】 1. 题目描述(粘贴):____ 2. 题目来源(LeetCode 题号等,如有):____ 3. 我的语言偏好(Python/Java/JS 等):____ 4. 我的卡点(没思路/超时/边界不会):____ 【讲解要求】 1. 讲解结构:题目理解 → 思路分析(怎么想到的)→ 复杂度分析 → 代码实现 → 举例子验证 → 易错点。 2. 思路讲「怎么想到」:从暴力解出发,讲怎么一步步优化(不是直接给最优解)。 3. 复杂度:时间/空间都说清,讲推导。 4. 代码:可运行、有注释。 5. 易错点:边界条件、细节坑 3 个。 【输出格式】 一、思路分析(暴力→优化) 二、复杂度分析 三、代码实现 四、示例验证 五、易错点与面试话术(怎么讲给面试官) 请直接输出,不要询问多余信息;题目缺失处用「____」占位。
____ 占位并提示用户补充。场景描述: 用户希望在多种编程语言中选择最适合的实现方式,并且希望对代码进行进一步优化以提高效率。 参数/步骤/组合技巧:
场景描述: 用户希望在解决基础题目后,了解其变体或扩展问题。 参数/步骤/组合技巧:
场景描述: 用户希望进行面试模拟,以检验自己的解题能力和表达能力。 参数/步骤/组合技巧:
场景描述: 用户希望根据自己的水平制定学习计划,从简单到复杂逐步提升。 参数/步骤/组合技巧:
场景描述: 用户需要解决 LeetCode 题目 35「Search Insert Position」,要求找到插入位置。 输入示例:
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,则返回它将会被按顺序插入的位置。 题目来源:LeetCode 35 语言偏好:Python 卡点:没思路
输出要点:
def searchInsert(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return left
场景描述: 用户需要解决 LeetCode 题目 10「Regular Expression Matching」,要求实现正则表达式匹配。 输入示例:
题目描述:给定一个字符串 s 和一个字符模式 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 题目来源:LeetCode 10 语言偏好:Java 卡点:超时
输出要点:
public boolean isMatch(String s, String p) {
int m = s.length(), n = p.length();
boolean[][] dp = new boolean[m + 1][n + 1];
dp[0][0] = true;
for (int j = 2; j <= n; j++) {
if (p.charAt(j - 1) == '*') {
dp[0][j] = dp[0][j - 2];
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (p.charAt(j - 1) == '.' || p.charAt(j - 1) == s.charAt(i - 1)) {
dp[i][j] = dp[i - 1][j - 1];
} else if (p.charAt(j - 1) == '*') {
dp[i][j] = dp[i][j - 2] || (dp[i - 1][j] && (s.charAt(i - 1) == p.charAt(j - 2) || p.charAt(j - 2) == '.'));
}
}
}
return dp[m][n];
}
场景描述: 用户需要解决 LeetCode 题目 743「Network Delay Time」,要求计算网络延迟。 输入示例:
题目描述:有 n 个节点和 m 条边的无向图。给定一个源节点 k 和一个数组 times,其中 times[i] = (u, v, w) 表示从节点 u 到节点 v 的边权为 w。现在要从节点 k 发送信号到所有其他节点,问能否在 T 秒内使所有节点收到信号。 题目来源:LeetCode 743 语言偏好:C++ 卡点:边界不会
输出要点:
#include <vector>
#include <queue>
using namespace std;
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
vector<vector<pair<int, int>>> graph(n + 1);
for (auto& time : times) {
graph[time[0]].push_back({time[1], time[2]});
}
vector<int> dist(n + 1, INT_MAX);
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq;
dist[k] = 0;
pq.push({0, k});
while (!pq.empty()) {
auto [d, u] = pq.top();
pq.pop();
if (d > dist[u]) continue;
for (auto& [v, w] : graph[u]) {
if (dist[v] > dist[u] + w) {
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
int maxDist = *max_element(dist.begin() + 1, dist.end());
return maxDist == INT_MAX ? -1 : maxDist;
}