New: leetcodeAll contenthive-129948hive-196917krsteemzzanhive-183959hive-180932hive-166405uncommonlabhive-185836hive-183397hive-150122photographyhive-144064bitcoinhive-188619lifekrsuccesshive-101145hive-124908hive-103599hive-139150hive-106183hive-184714hive-150943TrendingNewHotLikersfangwei (59)in programming • 23 days ago【LeetCode】541. 反转字符串 II1 题目描述 541. 反转字符串 II 给定一个字符串 s 和一个整数 k ,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 2 解题思路 转换为字符数组…fangwei (59)in programming • 24 days ago【Leetcode】344. 反转字符串1 题目描述 344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 2 解题思路 双指针技术 :使用两个指针 left 和 right 分别指向数组的开头和结尾。 交换元素 :当 left…fangwei (59)in programming • 25 days ago【LeetCode】142. 环形链表 II1 题目描述 142. 环形链表 II 给定一个链表的头节点 head ,要求返回链表开始入环的第一个节点。如果没有环,则返回 null 。 2 解题思路 快慢指针法 :使用两个指针,一个快指针 fast 每次走两步,一个慢指针 slow 每次走一步。 检测环路…fangwei (59)in programming • 26 days ago【LeetCode】160. 相交链表1 题目描述 160. 相交链表 要求给定两个单链表的头节点 headA 和 headB ,任务是找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 2 解题思路 为了解决这个问题,我们可以采用以下策略: 计算两个链表的长度 :首先分别遍历两个链表以获取它们的长度。 使较长链表的头指针与较短链表的头指针对齐…fangwei (59)in programming • 3 months ago【LeetCode】19. 删除链表的倒数第 N 个结点1 题目描述 19. 删除链表的倒数第 N 个结点 要求给定一个链表,任务是删除链表的倒数第 n 个结点,并且返回链表的头结点。 2 解题思路 本题可以通过双指针的方法来解决。具体来说,可以使用两个指针 slow 和 fast ,它们都初始化在哑节点 dummy 上。 fast 指针先向前移动 n + 1 步,然后两个指针同时移动,直到 fast…fangwei (59)in programming • 3 months ago【LeetCode】24. 两两交换链表中的节点1 题目描述 24. 两两交换链表中的节点 要求给定一个链表,要求两两交换其中相邻的节点,并返回交换后链表的头节点。需要注意的是,必须在不修改节点内部的值的情况下完成这个任务(即,只能进行节点交换)。 2 解题思路 为了实现两两交换,我们可以采用迭代的方法。首先定义一个哑节点(dummy node),它的 next 指向原链表的头节点 head…fangwei (59)in programming • 3 months ago【LeetCode】206. 反转链表1 题目描述 206. 反转链表 要求给定单链表的头节点 head ,任务是反转链表,并返回反转后的链表。 2 解题思路 递归反转 :使用递归方法,每次反转当前节点 cur 的 next 指针,使其指向其前一个节点 prev 。 终止条件 :当 cur 指针为空时,递归结束,此时 prev 指针即为反转后链表的头节点。…fangwei (59)in programming • 3 months ago【LeetCode】203. 移除链表元素1 题目描述 203. 移除链表元素 要求给定一个链表的头节点 head 和一个整数 val ,任务是删除链表中所有满足 Node.val == val 的节点,并返回新的头节点。 2 解题思路 使用虚拟头节点 :为了简化边界情况(例如当头节点需要被删除时),我们可以创建一个虚拟头节点 dummy…fangwei (59)in programming • 3 months ago【LeetCode】146. 螺旋遍历二维数组1 题目描述 LCR 146. 螺旋遍历二维数组 给定一个二维数组 array ,任务是返回「螺旋遍历」该数组的结果。螺旋遍历是指从左上角开始,按照 向右、向下、向左、向上的顺序 依次提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。 2 解题思路…fangwei (59)in programming • 3 months ago【LeetCode】54. 螺旋矩阵1 题目描述 54. 螺旋矩阵 要求给定一个 m 行 n 列的矩阵 matrix ,请按照顺时针螺旋顺序返回矩阵中的所有元素。 2 解题思路…fangwei (59)in programming • 3 months ago【LeetCode】59. 螺旋矩阵 II1 题目描述 给定一个正整数 n ,生成一个包含从 1 到 n^2 所有元素的 n x n 正方形矩阵 matrix ,并且这些元素按照顺时针方向螺旋排列。 2 解题思路 此题要求我们生成一个螺旋矩阵,我们可以考虑使用循环来逐层填充矩阵。对于每一层,我们需要依次处理四个边界:上边、右边、下边和左边。 具体来说,我们可以定义四个指针 startX , startY…fangwei (59)in programming • 3 months ago【LeetCode】209. 长度最小的子数组1 题目描述 209. 长度最小的子数组 要求给定一个含有 n 个正整数的数组 nums 和一个正整数 target 。任务是找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。 2 解题思路…fangwei (59)in programming • 3 months ago【LeetCode】977. 有序数组的平方1 题目描述 977. 有序数组的平方 要求给定一个按非递减顺序排列的整数数组 nums ,返回一个新的数组,其中每个元素都是原数组中对应元素的平方,并且新数组也需要是非递减顺序排列的。 2 解题思路…fangwei (59)in programming • 4 months ago【LeetCode】283. 移动零1 题目描述 283. 移动零 要求给定一个整数数组 nums ,编写一个函数将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序不变。该操作必须在原地完成,即不能使用额外的数据结构来存储数组。 2 解题思路 我们可以使用双指针的方法来解决这个问题: left 指针指向下一个可能放置非零元素的位置。 right…fangwei (59)in programming • 4 months ago【LeetCode】27. 移除元素1 题目描述 27. 移除元素 要求给定一个数组 nums 和一个值 val ,编写一个方法来原地移除数组中所有等于 val 的元素,并返回移除后数组的新长度。不需要保持元素的原始顺序。 2 解题思路 为了在原地修改数组并保证空间复杂度为 O(1),我们可以使用双指针技巧。具体来说,我们使用两个指针 slow 和 fast ,其中 slow…fangwei (59)in programming • 4 months ago【LeetCode】26. 删除有序数组中的重复项1 题目描述 26. 删除有序数组中的重复项 要求给定一个非严格递增排列的整数数组 nums ,要求原地删除数组中的重复元素,使得每个元素只出现一次,并返回删除重复元素后的数组长度。需要注意的是,元素的相对顺序应保持不变。 2 解题思路 本题的关键在于“原地删除”和“保持相对顺序”。由于数组是非严格递增的,我们可以利用双指针技术来解决这个问题。 左指针 (…fangwei (59)in programming • 4 months ago【LeetCode】69. x 的平方根1 题目描述 给定一个非负整数 x ,要求计算并返回 x 的算术平方根的整数部分。需要注意的是,不能使用任何内置的指数函数或运算符来求解该问题。 2 解题思路 本题可以通过二分查找的方法来求解。二分查找是一种在有序数组中查找特定元素的有效算法,对于本题,我们可以通过二分查找的方法在 [0, x] 的范围内寻找满足条件的整数。 初始化 :定义两个指针…fangwei (59)in programming • 4 months ago【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置1 题目解析 34. 在排序数组中查找元素的第一个和最后一个位置 要求在一个非递减排序的数组中找到特定元素 target 的起始位置和结束位置,并且要求的时间复杂度为O(log n),这提示我们使用二分查找法来解决问题。 2 解题思路 本题需要找到目标值在数组中的第一个和最后一个出现的位置。为了达到 O(log n)…fangwei (59)in programming • 4 months ago【LeetCode】35. 搜索插入位置1 题目描述 35. 搜索插入位置 要求根据给定一个排序数组 nums 和一个目标值 target ,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,则返回它将会被按顺序插入的位置。要求使用的时间复杂度为 O(log n)。 2 解题思路 由于题目要求使用 O(log n)…fangwei (59)in programming • 4 months ago【LeetCode】704. 二分查找1 题目描述 704. 二分查找 要求实现一个二分查找算法,来在一个升序排列的整数数组中查找指定的目标值 target 。如果找到目标值,则返回它的索引;如果没有找到,则返回 -1 。 2 解题思路 二分查找是一种高效的查找方法,适用于 已排序 的数组。其基本思想是通过将目标值与数组中间位置的元素进行比较,来逐步缩小查找范围直至找到目标值或查找范围为空为止。…