我将以《数字匹配问题》这道题为例,通过这篇文章来解析豆包MarsCode AI刷题的亮点所在;
题面如下:
有的同学可能看到题面就有些糊涂了,没太搞明白这道题到底需要干什么,这时候就可以让豆包MarsCode AI出场了,让它帮我们解析一下题意:
可以看到豆包MarsCode AI分析的非常详细,不仅告诉了我们这道题的关键点,还帮我们把题目示例解释了一遍,个人觉得很多时候读懂一道题目的最快方法就是看题目示例的解释,特别是对于一些题面背景描述特别多的题目,对于题目示例的解释能帮我们跳过这些无关因素直达重点。
现在我们已经理解了题意,但是还是不知道用什么方法解决这道题😢,这时候我们还不想让AI直接给我们实现思路,因为这样我们就没有必要的思考过程,无法有效提升我们的解题能力,所以我只想让AI给我提示一下这道题可以使用什么方法:
好了,现在我们已经知道可以使用贪心算法实现了,下面就需要我们先自己思考一下,在使用贪心算法的前提下,具体实现步骤是什么样的呢? 如果想出来我们就可以直接实现了,但是可能冥思苦想一番后还是不知道具体怎么实现,这是就可以继续求助AI了:
好了,具体步骤也有了,下面我们就来具体实现一下吧:
import java.util.*;
public class Main {
public static int solution(int N, int M, int[] X) {
Arrays.sort(X);
int count = 0;
boolean[] used = new boolean[N];
for (int i = 0; i < N; i++) {
if (used[i]) continue;
for (int j = i + 1; j < N; j++) {
if (!used[j] && Math.abs(X[j] - X[i]) >= M) {
count++;
used[i] = true;
used[j] = true;
break;
}
}
}
return count;
}
public static void main(String[] args) {
int[] arr1 = {1, 3, 3, 7};
int[] arr2 = {10, 9, 5, 8, 7};
int[] arr3 = {2, 4, 6, 8, 10, 12};
System.out.println(solution(4, 2, arr1) == 2);
System.out.println(solution(5, 5, arr2) == 1);
System.out.println(solution(6, 3, arr3) == 3);
}
}
愉快的实现完了,让我们运行一下吧,点击页面最上方的运行按钮:
在页面最下方的终端可以看到输出:
Oooops!😮为什么第三个示例出错了?让我们手动分析一下:对于数组[2,4,6,8,10,12],这个算法会先匹配到{2,6},{4,8},到10和12则无法匹配,只能匹配出2组数字对,而正确的匹配之一是{2,8},{4,10},{6,12},完全可以匹配出3组数字对;看来AI的思路有些问题,那我们把这个情况告诉它,让它据此修改一下自己的实现思路:
AI给出了修改后的实现步骤,重点在于双指针法中的后一个指针要由数组的中间开始匹配,那我们再次实现:
import java.util.*;
public class Main {
public static int solution(int N, int M, int[] X) {
Arrays.sort(X);
int count = 0;
int i = 0;
int j = N / 2;
while (i < N / 2 && j < N) {
if (Math.abs(X[j] - X[i]) >= M) {
count++;
i++;
j++;
} else {
j++;
}
}
return count;
}
public static void main(String[] args) {
int[] arr1 = {1, 3, 3, 7};
int[] arr2 = {10, 9, 5, 8, 7};
int[] arr3 = {2, 4, 6, 8, 10, 12};
System.out.println(solution(4, 2, arr1) == 2);
System.out.println(solution(5, 5, arr2) == 1);
System.out.println(solution(6, 3, arr3) == 3);
}
}
先运行一下示例:
示例运行结果没有问题,点击页面最上方的提交按钮提交:
通过🤩:
总结一下,豆包MarsCode AI刷题的亮点所在:
-
题意解析:能够帮助用户深入理解题目要求。对于那些背景信息较多或表述较为复杂的题目,豆包MarsCode AI能够提供详细的解析,帮助用户快速抓住题目的核心。
-
逐步引导学习:在用户遇到困难时,可以不是直接给出答案,而是通过适当的提示引导用户自己思考解决方案。这种做法有助于培养用户的独立解决问题的能力,避免了过度依赖。
-
具体实现指导:如果用户在尝试实施解决方案时遇到了具体的障碍,豆包MarsCode AI能够进一步提供具体的实现步骤,帮助用户克服难关。
-
错误修正与反馈:当用户的代码出现错误时,豆包MarsCode AI不仅能指出错误所在,还能提供修改建议。这种即时反馈机制有助于用户及时纠正错误,并在错误中学习。
综上所述,豆包MarsCode AI刷题工具不仅能够有效地帮助用户理解题目、寻找解题思路、实现代码以及修正错误,而且可以在整个过程中培养用户的自主学习能力和解决问题的能力,是一个功能全面且高效的在线学习辅助工具。
好了,那么我们这一次的解析就到这里,后面会给大家展示豆包MarsCode AI刷题的更多功能。