LeetCode刷题记录:数组篇(简单题目与解法)

需积分: 16 1 下载量 195 浏览量 更新于2024-07-18 收藏 34KB DOCX 举报
本文档是关于作者在LeetCode网站上针对简单难度、涉及数组类别的前40道左右题目进行的刷题记录。这些题目涵盖了多种算法和数据结构的应用,旨在提升对基本编程技巧的理解和熟练程度。 1. 题目D.两数和 - 问题:在数组中寻找是否存在两个数,它们的和等于给定的目标值。 - 算法:使用哈希表(map)来存储每个元素和其索引,通过`map.containsKey(temp)`快速查找差值。 - 数据结构:哈希表 - 时间复杂度:线性时间O(n),遍历一次数组。 - 空间复杂度:O(n),存储哈希表需要额外空间。 - 错误:在返回结果时,错误地构造了数组,应为`new int[]{i, map.get(temp)}`而不是`new int[][i, map.get(temp)]`。 2. 题目26.C.删除排序数组中的重复项 - 任务:在有序数组中删除重复元素,返回新数组的长度。 - 方法:双指针技术,一个指针遍历,另一个记录不重复元素的下标。 - 数据结构:数组 - 复杂度:时间O(n),空间O(1),仅需一个额外下标。 - 错误:数组长度判断错误,正确写法应该是`nums.length == 0`。 3. 题目27.B.移除元素 - 目标:原地修改数组,移除不等于指定值的元素,返回修改后数组的长度。 - 策略:单次遍历,遇到指定值就将最后一个元素替换并丢弃。 - 数据结构:数组 - 错误:在代码实现中,需要注意修改条件、避免混淆等常见错误。 4. 题目35.C.搜素插入位置 - 挑战:在排序数组中查找目标值的位置或插入位置。 - 算法:简单遍历,用一个下标记录目标索引。 - 数据结构:数组 - 复杂度:线性时间O(n),遍历一次。 - 错误:确保循环结束后正确返回结果,可能存在出界或逻辑错误。 5. 题目53.A.最大子序和 - 问题:找出数组中连续子数组的最大和。 - 技术:动态规划,使用一维数组存储每个位置的最大和及其前缀最大和。 - 数据结构:数组 - 复杂度:时间O(n),空间O(n)用于动态规划数组。 - 注意:动态规划过程中需要注意边界条件和状态转移规则。 通过解决这些题目,作者不仅掌握了基本的数组操作技巧,还锻炼了解决问题和数据结构运用的能力,有助于提升编程技能。对于每一道题,理解算法背后的原理以及常见错误点是关键,这有助于在未来遇到类似问题时能够快速准确地解决。