这篇青训营 X 豆包MarsCode 技术训练营伴学笔记我选择的方向是方向一:学习方法与心得。
虽然不是算法选手,但这一篇或许可以提供一些AI刷题上的技巧?借助豆包MarsCode AI更好刷题!
如果不知道豆包MarsCode AI,刷题链接在juejin.cn/problemset 。 还有更多利用豆包MarsCode AI的经验和技巧在微信公众号豆包MarsCode!(0基础上手也很轻松)
下面是豆包MarsCode AI刷题的页面(可以选择题型和状态进行刷题)
下面举了一些例子进行AI刷题技巧+经验展示
(可以分别输入指令对思路、图解、代码详解进行辅助。)
AI代码陪练是来帮助我们提高代码能力的。
如果遇到题目想了很久没有思路,可以输入这样的指令“假如你现在是一名算法专家,你能告诉我解决这道题的思路是什么吗?”
下面是AI的回答:
当然可以!解决这道题的关键在于理解题目中给出的条件:除了一个数字之外,所有的数字都恰好出现了两次。我们可以利用异或运算(XOR)的特性来解决这个问题。
解题思路
-
异或运算的特性:
-
异或运算(XOR)是一种位运算,具有以下特性:
a ^ a = 0
:任何数与自身异或的结果是0。a ^ 0 = a
:任何数与0异或的结果是它本身。- 异或运算满足交换律和结合律:
a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b
。
-
-
利用异或运算:
-
由于题目中除了一个数字之外,所有的数字都恰好出现了两次,因此我们可以通过对数组中的所有数字进行异或运算,最终得到的结果就是那个只出现一次的数字。
-
具体步骤如下:
- 初始化一个变量
result
为0。 - 遍历数组中的每一个数字,将
result
与当前数字进行异或运算。 - 最终
result
的值就是那个只出现一次的数字。
- 初始化一个变量
-
算法步骤
-
初始化
result
为0。 -
遍历数组
cards
中的每一个元素card
:- 将
result
与card
进行异或运算,即result = result ^ card
。
- 将
-
返回
result
,它就是那个只出现一次的数字。
时间复杂度
- 该算法的时间复杂度为 O(n),其中 n 是数组的长度。因为我们只需要遍历一次数组。
空间复杂度
- 该算法的空间复杂度为 O(1),因为我们只使用了一个额外的变量
result
,没有使用额外的数据结构。
通过这种方式,我们可以在 O(n) 的时间复杂度和 O(1) 的空间复杂度内解决这个问题。
如果希望通过图解的方式辅助理解,可以在思路prompt后追加“可以以图解方式辅助我的理解吗?”
AI同样会输出相应图解进行辅助
如果希望给出正确代码及详解,可输入prompt“请根据题目要求输出完整、正确、可运行代码并做出详解,注意一定不要出错报错!请注意,函数名是solution!”
这对绝大多数题目适用,可以辅助大多数简单题和中等题。 AI同样会输出完整代码,后面附带详解
如果你想利用豆包MarsCode AI 进行刷题练习,你可以输入prompt“现在你是一名知识点总结专家,这道题涉及算法中哪些知识呢?我没做出来这道题你推荐我继续加强哪一方面的知识呢?如果我要弥补我这一方面的缺漏,我可以继续刷AI题库中的哪些题?”
AI会输出考察的知识点以及在本题哪些地方应用以及推荐刷题方向
然后对于没有做出来的题,学习后重新回来刷题快速检索的方法就是选择进行中状态的题目!
好了,这是我目前觉得一些比较好的刷题技巧和方法,希望对你有帮助,或许都是prompt相关的内容,但是或许方便AI刷题呢?