Leetcode
峰哥凹凸曼
这个作者很懒,什么都没留下…
展开
-
LeetCode 125. 验证回文串
我们可以定义两个指针,一个指向字符串的开头,另一个指向字符串的末尾。然后,不断向中间移动指针,同时比较两个指针指向的字符是否相同。如果两个指针相遇,则字符串是回文串。我们不断比较指针指向的字符是否相同,如果有不相同的字符,则字符串不是回文串;如果两个指针相遇,则字符串是回文串。的每个字符,判断是否是字母或数字,如果是,则将其转换为小写并添加到。最后,如果遍历过程中没有发现不相同的字符,说明字符串是回文串,返回。我们需要遍历字符串构建新的字符串,并使用双指针进行判断。,分别指向字符串的开头和末尾。原创 2023-06-21 18:39:21 · 145 阅读 · 1 评论 -
LeetCode 14. 最长公共前缀
我们可以从第一个字符串的第一个字符开始,逐个字符地与其他字符串进行比较。如果在比较过程中发现不相同的字符,或者某个字符串的长度已经达到了最短字符串的长度,则停止比较。最后,我们将相同的字符添加到结果字符串中,并返回最长公共前缀。然后,我们遍历第一个字符串的每个字符,并与其他字符串的相同位置的字符进行比较。在比较字符之前,我们还要确保索引不会超出其他字符串的长度,以防止越界错误。如果发现不相同的字符或某个字符串已经达到最短字符串的长度,则停止比较。,我们需要找出一个字符串,它是所有字符串的公共前缀。原创 2023-06-21 18:32:22 · 96 阅读 · 0 评论 -
Leetcode 238. 除自身以外数组的乘积
我们可以先计算每个位置左侧所有元素的乘积,然后再计算每个位置右侧所有元素的乘积。最后将左侧乘积和右侧乘积相乘,就得到了所需的结果。然后,我们从左到右遍历数组,计算每个位置左侧所有元素的乘积,并将结果保存在。从右到左遍历数组,计算每个位置右侧所有元素的乘积,并将其与左侧乘积相乘,更新。这道题目要求计算一个数组中除了当前位置之外的所有元素的乘积数组。,我们需要返回一个新的数组,其中每个元素是原数组中除了自身之外所有元素的乘积。我们需要遍历两次数组来计算左侧乘积和右侧乘积。首先,我们初始化结果数组。原创 2023-06-18 15:59:38 · 121 阅读 · 0 评论 -
Leetcode 45. 跳跃游戏 II
数组中的每个元素表示在当前位置最多可以跳跃的步数。我们需要确定是否存在一种跳跃方式,能够到达数组的最后一个位置。的值为当前位置加上能够跳跃的最大步数,确保能够跳到更远的位置。这道题目要求判断是否能够从数组的起始位置跳跃到最后一个位置。最后,如果能够遍历完整个数组,说明可以成功到达最后一个位置,我们返回。最后,如果能够遍历完整个数组,说明可以成功到达最后一个位置,返回。我们只需要遍历一次数组来判断是否能够到达最后一个位置。,表示当前能够到达的最远位置。,则意味着无法到达当前位置,我们返回。原创 2023-06-18 15:53:48 · 101 阅读 · 0 评论 -
Leetcode 122. 买卖股票的最佳时机 II
这个题解的关键点在于贪心选择,即每次都选择局部最优解,使得最终的结果也是全局最优解。在这个问题中,我们只关注价格上涨的情况,因为只有在价格上涨时才能获得利润。而对于价格下跌的情况,我们选择不进行买卖操作,以免造成亏损。我们需要进行 n-1 次价格差的计算,因为我们比较的是相邻两天的价格。如果价格差大于零,则将利润累加到。来计算相邻两天的价格差,如果价格差大于零,则认为存在利润。这个算法的时间复杂度为 O(n),因为我们只需要一次遍历来计算最大利润。这个解法使用了贪心算法的思想。原创 2023-06-18 15:50:21 · 93 阅读 · 0 评论 -
LeetCode 189. 旋转数组
这个问题的主要解决方案是使用一个额外的数组来帮助我们旋转。为了得到旋转后的位置,我们可以考虑原数组中的每一个元素,在旋转后数组中应该处于的位置。对于原数组中的第 i 个元素,向右移动 k 个位置后,它应该处于。给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。原创 2023-06-15 21:43:06 · 85 阅读 · 0 评论 -
LeetCode 121. 买卖股票的最佳时机
你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。,分别表示到目前为止所遇到的最小股票价格和最大可能的利润。然后我们检查卖出股票能否获得更高的利润,即当前价格减去。遍历过程中,对于每一个价格,我们首先检查是否需要更新。个元素是一支给定的股票在第。更低,如果是,我们更新。给定一个数组,它的第。原创 2023-06-15 21:37:54 · 52 阅读 · 0 评论 -
Leetcode 80删除有序数组中的重复项 II
这个问题的主要解决方案是使用一个变量 index 作为新数组的索引。对原数组进行遍历,当遍历到的元素不等于新数组前两个元素,或者新数组长度还不到2时(即还没有两个元素),就将遍历到的元素放入新数组。给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素最多出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。原创 2023-06-15 21:29:09 · 48 阅读 · 0 评论 -
Leetcode26.删除有序数组中的重复项
这个问题的主要解决方案是使用双指针法,一般称为快慢指针。快指针(fast)用来遍历数组,慢指针(slow)用来标记不重复的元素的位置。当遍历过程中,快慢指针指向的元素不相等时,慢指针向前移动一位,并将快指针所指向的元素复制到慢指针的位置。遍历结束后,slow 的位置就是新的数组长度。给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。原创 2023-06-15 21:22:03 · 52 阅读 · 0 评论 -
Leetcode 118. 杨辉三角
对于杨辉三角的每一行,首尾元素都是 1,中间的每个元素是上一行相邻两个元素之和。这就是我们的转移关系,利用这个关系我们就可以生成杨辉三角。给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。原创 2023-06-14 11:08:21 · 44 阅读 · 0 评论 -
Leetcode 70. 爬楼梯
阶的爬法是前一阶的爬法加上前两阶的爬法。特别地,第 1 阶只有一种爬法(爬 1 阶),第 2 阶有两种爬法(爬 2 阶或者爬两次 1 阶)。需要 n 阶你才能达到楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?这是一个典型的动态规划问题,我们可以通过一维动态规划表来解决。原创 2023-06-14 11:01:36 · 45 阅读 · 0 评论 -
Leetcode153. 寻找旋转排序数组中的最小值
假设按照升序排序的数组在预先未知的某个点上进行了旋转。该题可以通过二分查找的方法求解。在查找过程中,我们比较。请找出其中最小的元素。注意数组中可能存在重复的元素。原创 2023-06-14 10:50:15 · 169 阅读 · 0 评论 -
Leetcode33. 搜索旋转排序数组
这个问题的关键是理解二分查找。对于旋转后的升序数组,可以发现的规律是:不论我们取数组中的哪一个元素,至少有一半的元素是有序的。请你在数组中搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回。一个整数数组 nums 按升序排列,然后在未知的某个点上进行了旋转(例如,原创 2023-06-14 10:46:22 · 36 阅读 · 0 评论 -
LeetCode 2. 两数相加
LeetCode 2. 两数相加。原创 2023-05-30 21:49:15 · 41 阅读 · 0 评论 -
LeetCode 98. 验证二叉搜索树
LeetCode 98. 验证二叉搜索树。原创 2023-05-30 21:37:56 · 43 阅读 · 0 评论 -
LeetCode 114. 二叉树展开为链表
LeetCode 114. 二叉树展开为链表原创 2023-05-30 21:29:05 · 50 阅读 · 0 评论 -
LeetCode 200. 岛屿数量
LeetCode 200 岛屿数量原创 2023-05-30 21:09:43 · 47 阅读 · 0 评论 -
LeetCode 994. 腐烂的橘子
LeetCode 994. 腐烂的橘子。原创 2023-05-30 20:50:13 · 146 阅读 · 0 评论