代码实现:public class Main { public static int solution(int n, int l, int r, int[] a) { int count = 0; for (int num : a) { if (num % 2 == 0 && num >= l && num <= r) { count++; } } return count; }
public static void main(String[] args) {
System.out.println(solution(5, 3, 8, new int[]{1, 2, 6, 8, 7}) == 2);
System.out.println(solution(4, 10, 20, new int[]{12, 15, 18, 9}) == 2);
System.out.println(solution(3, 1, 10, new int[]{2, 4, 6}) == 3);
}
}## 题目解析
以一道经典的 “两数之和” 问题为例进行解析。题目要求给定一个整数数组和一个目标值,找出数组中两个数相加等于目标值的索引组合。
思路方面:常见的思路有两种,一种是暴力解法,通过两层嵌套循环,遍历数组中每两个元素的组合,判断它们的和是否等于目标值,时间复杂度为 ,但这种方法效率较低。另一种高效思路是利用哈希表,在遍历数组时,用目标值减去当前元素得到差值,然后去哈希表中查找是否存在这个差值对应的元素,若存在则找到了符合要求的两个数,时间复杂度可优化至 。
图解:可以想象数组元素依次排列成一行,用指针从左到右遍历。对于哈希表的思路,每遍历到一个元素,就将其放入哈希表,同时查看对应的差值是否已在哈希表中,若在,就相当于找到了匹配的两个数,通过图形能更直观地理解元素的查找和匹配过程。
知识总结
在刷题过程中,新学到了哈希表这种数据结构的巧妙运用。它能以键值对的形式快速存储和查找元素,极大提高算法效率。理解上,哈希表就像是一个有很多 “抽屉”(桶)的柜子,每个 “抽屉” 对应一个键,能快速根据键找到对应的 “物品”(值)。对于入门同学,建议多去了解不同数据结构的特点和适用场景,比如数组适合顺序存储和随机访问,而哈希表擅长快速查找。每学习一个知识点,要通过多做相关题目来体会它在不同情境下的运用方式,加深理解。
学习计划
制定刷题计划时,首先要对知识点进行分类梳理,比如按照数据结构、算法类型等划分。从简单基础的部分开始,比如先刷数组相关题目,熟练掌握后再进入更复杂的如树、图相关内容。对于错题,要详细分析错误原因,是思路没打开,还是对某个知识点理解有误。把错题整理到专门的错题本中,定期回顾重做,同时拓展同类题目进行强化练习,针对性地弥补知识漏洞,这样逐步积累,构建起完整的知识体系。
工具运用
将 AI 刷题功能与其他学习资源结合能事半功倍。比如与专业的算法教材搭配,先通过教材系统学习算法原理和基础概念,再到 AI 刷题平台进行实践巩固,遇到不懂的题目,参考 AI 的详细解析加深理解。 还可以结合线上学习论坛,把刷题中遇到的难题发布上去,借鉴他人的思路和经验,同时对照 AI 的答案完善自己的解法。此外,观看优质的算法讲解视频后,利用 AI 刷题功能及时检验学习成果,多种资源协同,提升学习效果。总之,合理利用豆包 MarsCode AI 刷题功能及其他学习资源,遵循科学的学习方法,能助力编程学习不断进步。