LeetCode 初级算法案例 Java 实现(数组篇)

版权申诉
0 下载量 180 浏览量 更新于2024-07-08 收藏 413KB PDF 举报
"LeeCode初级算法案例+java代码(数组篇)" 本文总结了LeeCode初级算法案例中的数组篇,涵盖了9个不同的算法题目,包括删除排序数组的重复项、买卖股票的最佳时机II、旋转数组、存在重复元素、只出现一次的数字、两个数组的交集II、加一、移动零、两数之和等问题。每个题目都提供了相应的Java代码实现和解题思路。 **删除排序数组的重复项** 删除排序数组的重复项是数组篇中最基本的问题之一。给定一个排序数组,要求删除其中的重复项。例如,给定数组 `[1, 1, 2]`,删除重复项后得到 `[1, 2]`。本文提供了两种解决方案:一种是使用双指针法,另一种是使用快慢指针法。双指针法的时间复杂度为O(n),空间复杂度为O(1);快慢指针法的时间复杂度为O(n),空间复杂度为O(1)。 **买卖股票的最佳时机II** 买卖股票的最佳时机II是数组篇中的一道著名的问题。给定一个数组,表示股票的价格,要求找到可以赚取的最大总差价。例如,给定数组 `[7, 1, 5, 3, 6, 4]`,可以找到最大总差价为 `7`。本文提供了一种使用while循环的解决方案,时间复杂度为O(n),空间复杂度为O(1)。 **旋转数组** 旋转数组是数组篇中的一道基础的问题。给定一个数组和一个整数k,要求将数组旋转k个位置。例如,给定数组 `[1, 2, 3, 4, 5, 6, 7]` 和整数 `3`,旋转后得到 `[5, 6, 7, 1, 2, 3, 4]`。本文提供了一种使用模运算的解决方案,时间复杂度为O(n),空间复杂度为O(1)。 **存在重复元素** 存在重复元素是数组篇中的一道基础的问题。给定一个数组,要求判断其中是否存在重复元素。例如,给定数组 `[1, 2, 3, 4, 5, 6]`,不存在重复元素。本文提供了一种使用HashSet的解决方案,时间复杂度为O(n),空间复杂度为O(n)。 **只出现一次的数字** 只出现一次的数字是数组篇中的一道基础的问题。给定一个数组,要求找到其中只出现一次的数字。例如,给定数组 `[2, 2, 1, 3, 3]`,只出现一次的数字为 `1`。本文提供了一种使用HashMap的解决方案,时间复杂度为O(n),空间复杂度为O(n)。 **两个数组的交集II** 两个数组的交集II是数组篇中的一道基础的问题。给定两个数组,要求找到其中的交集。例如,给定数组 `[1, 2, 2, 1]` 和 `[2, 2, 3]`,交集为 `[2, 2]`。本文提供了一种使用HashMap的解决方案,时间复杂度为O(n),空间复杂度为O(n)。 **加一** 加一是数组篇中的一道基础的问题。给定一个数组,要求将其中的每个元素加一。例如,给定数组 `[1, 2, 3, 4, 5]`,加一后得到 `[2, 3, 4, 5, 6]`。本文提供了一种使用简单迭代的解决方案,时间复杂度为O(n),空间复杂度为O(1)。 **移动零** 移动零是数组篇中的一道基础的问题。给定一个数组,要求将其中的零元素移动到数组的末尾。例如,给定数组 `[0, 1, 0, 3, 12]`,移动零后得到 `[1, 3, 12, 0, 0]`。本文提供了一种使用双指针法的解决方案,时间复杂度为O(n),空间复杂度为O(1)。 **两数之和** 两数之和是数组篇中的一道基础的问题。给定一个数组和一个整数target,要求找到数组中两个元素的和等于target的元素。例如,给定数组 `[2, 7, 11, 15]` 和整数 `9`,找到元素 `2` 和 `7`。本文提供了一种使用HashMap的解决方案,时间复杂度为O(n),空间复杂度为O(n)。