我理解的优势
先说结论,因为MarsCode其最为突出的能力——AI能力,在一众刷题应用之中只有它最适合编程初学者学习编程、算法进阶。作为一个不知名普通双非二本软件工程的菜鸡学生(buff叠满),我这种从来没刷过题的小趴菜特别讨厌刷题,因为题目看不懂(题目太长,而自己逻辑混乱)、看懂没思路(自己逻辑混乱)、有思路写不出来(边界处理 , 数据结构的选择,功能分解)。有了MarsCode就不一样了,题目解析、思路提示(可以分为思路讲解提示、辅以代码的思路提示)。AI就像一个良师益友,能引导我去思考,最终授我以“渔”。
MarsCode的AI对话窗口集成在在线IDE的右侧面板,进入刷题开始敲码的适合会自动载入正在刷的这道题,我不必费心去复制粘贴。
-
题目太长,关系混乱,理解不能?没关系,AI会给我们整理冗长的题目,发现我们发现不了的,一步一步拆解提问题,一点一点理解题目,引导我们思考核心的逻辑。
-
题目太难,技术太差,没有思路?呆胶布,AI会帮你分解题目,给你一个大致的算法逻辑并附上他的引导提示,把核心逻辑留给你自己去实现。有时候看见一部分实现,对于我这种初学者来说,真的有拨云见雾、醍醐灌顶的感觉。如果还是看不懂,那就追问他。
-
除了思路提示、代码提示,它还能一键解决很多编码错误问题、异常。比如边界处理。
-
承担一部分设计的工作,比如选择怎样的数据结构,用迭代还是递归,递归怎么设计... ...
-
遇见没做的类型,比如一道需要动态规划的题,你可以问他动态规划相关的概念逻辑,让他解释状态转移方程是怎么得来的。
我的实践案例
上边这几条困难我之前几乎没有怎么做过算法题,只是某。本以为入营和结营考核的刷题数量要求会是我的一道难关,结果在MarsCode的帮助下,我居然也能过关斩将,从完全没有想法,再到做题过程中的主动思考算法逻辑、实现逻辑的过程。下面摘取我某次刷题的实践经历:
题目:和的逆运算
读完问题描述,虽然它只有寥寥两行,但我不太理解n*(n-1)/2个和,因为两两相加可以有很多不同的理解,比如可能是(带圈序号表示不同的理解,数字代表序号):① 1+2、2+3、3+4... ...(相邻求和或者相邻带组合求和) ②1+2 1+3... ... 2+3......(先求出所有可能的组合,每组求和) ③... ... (排列求和)。看到这里你也许可以一眼看出题目表达的是理解①。这是因为我给出了选项。有选项对比和没有选项空想是完全不一样的,当时确实有点一头雾水,高中的公式也忘记差不多了...就问了AI。AI不仅直接指出是组合求和再相加,还给出了示例,如下图:
说白了,传入的数组就是就是一个组合数求和的集合。从原数列推出这个集合倒是不难,直接暴力搜索就可以了,但是逆向... ...总不能真的从1开始试,求出第一个再求第二个,然后求下一个,回溯吧?这肯定爆炸啊!!
越是危机的时候就越不能慌张,这时候要把思路逆转过来!
其实这时候就可以去问AI要个思路,然后根据AI的思路顺沿下去走通。
出现了新的信息!推导的前三个数之间是有关系的!这就为一点一点暴力搜缩小了很大的规模。然后我试着画图证明了这个,果然如此。草稿找不到了,
但是大致长这样
1+2 1+3 1+4 ... 1+n
2+3 2+4 ... 2+n
... ... ...
... ...
n-1+n
横着看,左边的小于右边的,竖着看,上边的小于下边的,这样就可以得出AI的结论了。 下边就跟着AI的框架去填充逻辑,最终A出来了。 在上边的实践示例中,AI帮我完成了题目解析帮我理性了题目的逻辑,帮我发现了题目中隐含的数学关系,这样一步一步帮助我做出来这道算法题。