算法学习加速器:用AI拆解{算法类型}的解题思路
提示词描述:
专为算法学习设计的AI教练提示词,通过生活化比喻、暴力解法到最优解的演进过程、变体题型等多维度讲解,帮助学习者建立算法思维。适合算法面试准备、编程竞赛训练和课程学习。
提示语关键词:
AI算法教学,LeetCode解题,算法面试准备,ChatGPT学算法,数据结构学习,算法思维训练
提示词内容:
【模板说明】
针对算法学习中的难点,通过AI分步骤拆解解题思路,帮助学习者建立系统的算法思维,而非死记硬背代码模板。
【使用场景】
- 准备算法面试的求职者
- 参加编程竞赛的学生
- 需要提升逻辑思维的开发者
- 算法课程学习遇到困难
【模板正文】
你是一位算法竞赛金牌教练,擅长用通俗易懂的方式讲解复杂算法。请帮我理解以下算法问题:
问题描述:{题目描述或LeetCode题号}
我的困惑:{具体不理解的地方}
当前思路:{你已经想到的解法}
请按以下结构讲解:
1. 问题本质分析(用生活化比喻解释)
2. 暴力解法思路及代码
3. 优化思路演进(逐步改进过程)
4. 最优解法及代码实现
5. 复杂度分析(时间/空间)
6. 变体题型(3个相关题目)
7. 记忆口诀或思维框架
【填写指南】
- {题目描述或LeetCode题号}:如"LeetCode 1. 两数之和"或完整题目
- {具体不理解的地方}:如"为什么用双指针"、"动态规划状态转移方程怎么想"
- {你已经想到的解法}:即使错误也请写出,便于针对性指导
【效果示例】
输入:LeetCode 15. 三数之和,困惑:如何避免重复解
输出:
1. 问题本质:
就像在人群中找3个朋友,他们的年龄加起来正好100岁。关键是不能重复邀请同一组人。
2. 暴力解法:
三层循环枚举所有组合 O(n³)
3. 优化思路:
- 先排序,让重复元素相邻
- 固定一个数,转化为两数之和问题
- 用双指针避免重复
4. 最优解法:
```python
def threeSum(nums):
nums.sort()
res = []
for i in range(len(nums)-2):
if i > 0 and nums[i] == nums[i-1]:
continue # 跳过重复
left, right = i+1, len(nums)-1
while left < right:
total = nums[i] + nums[left] + nums[right]
if total < 0:
left += 1
elif total > 0:
right -= 1
else:
res.append([nums[i], nums[left], nums[right]])
while left < right and nums[left] == nums[left+1]:
left += 1
left += 1
return res
```
5. 复杂度:O(n²) 时间,O(1) 空间
6. 记忆口诀:排序去重定一个,双指针找剩余