BlogHide Resteemsfangwei (59)in programming • 2 months ago【LeetCode】541. 反转字符串 II1 题目描述 541. 反转字符串 II 给定一个字符串 s 和一个整数 k ,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 2 解题思路 转换为字符数组…fangwei (59)in programming • 2 months ago【Leetcode】344. 反转字符串1 题目描述 344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 2 解题思路 双指针技术 :使用两个指针 left 和 right 分别指向数组的开头和结尾。 交换元素 :当 left…fangwei (59)in programming • 2 months ago【LeetCode】142. 环形链表 II1 题目描述 142. 环形链表 II 给定一个链表的头节点 head ,要求返回链表开始入环的第一个节点。如果没有环,则返回 null 。 2 解题思路 快慢指针法 :使用两个指针,一个快指针 fast 每次走两步,一个慢指针 slow 每次走一步。 检测环路…fangwei (59)in programming • 2 months ago【LeetCode】160. 相交链表1 题目描述 160. 相交链表 要求给定两个单链表的头节点 headA 和 headB ,任务是找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 2 解题思路 为了解决这个问题,我们可以采用以下策略: 计算两个链表的长度 :首先分别遍历两个链表以获取它们的长度。 使较长链表的头指针与较短链表的头指针对齐…fangwei (59)in programming • 4 months ago【LeetCode】19. 删除链表的倒数第 N 个结点1 题目描述 19. 删除链表的倒数第 N 个结点 要求给定一个链表,任务是删除链表的倒数第 n 个结点,并且返回链表的头结点。 2 解题思路 本题可以通过双指针的方法来解决。具体来说,可以使用两个指针 slow 和 fast ,它们都初始化在哑节点 dummy 上。 fast 指针先向前移动 n + 1 步,然后两个指针同时移动,直到 fast…fangwei (59)in programming • 4 months ago【LeetCode】24. 两两交换链表中的节点1 题目描述 24. 两两交换链表中的节点 要求给定一个链表,要求两两交换其中相邻的节点,并返回交换后链表的头节点。需要注意的是,必须在不修改节点内部的值的情况下完成这个任务(即,只能进行节点交换)。 2 解题思路 为了实现两两交换,我们可以采用迭代的方法。首先定义一个哑节点(dummy node),它的 next 指向原链表的头节点 head…fangwei (59)in study • 4 months ago【并发任务调度】01. 线程基础在当今高度并发的应用环境中,线程管理对于构建高效、响应迅速的系统至关重要。Java 语言的线程模型不断演进,从最初的用户线程到现在的内核线程映射,并在 Java 21 中引入了虚拟线程,旨在提升并发处理能力和资源利用率。本文将概述 Java 线程的不同实现方式,探讨虚拟线程如何通过轻量级设计优化阻塞任务的处理,并对比操作系统与 Java…fangwei (59)in programming • 4 months ago【LeetCode】206. 反转链表1 题目描述 206. 反转链表 要求给定单链表的头节点 head ,任务是反转链表,并返回反转后的链表。 2 解题思路 递归反转 :使用递归方法,每次反转当前节点 cur 的 next 指针,使其指向其前一个节点 prev 。 终止条件 :当 cur 指针为空时,递归结束,此时 prev 指针即为反转后链表的头节点。…fangwei (59)in programming • 4 months ago【LeetCode】203. 移除链表元素1 题目描述 203. 移除链表元素 要求给定一个链表的头节点 head 和一个整数 val ,任务是删除链表中所有满足 Node.val == val 的节点,并返回新的头节点。 2 解题思路 使用虚拟头节点 :为了简化边界情况(例如当头节点需要被删除时),我们可以创建一个虚拟头节点 dummy…fangwei (59)in programming • 4 months ago【LeetCode】146. 螺旋遍历二维数组1 题目描述 LCR 146. 螺旋遍历二维数组 给定一个二维数组 array ,任务是返回「螺旋遍历」该数组的结果。螺旋遍历是指从左上角开始,按照 向右、向下、向左、向上的顺序 依次提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。 2 解题思路…fangwei (59)in programming • 4 months ago【LeetCode】54. 螺旋矩阵1 题目描述 54. 螺旋矩阵 要求给定一个 m 行 n 列的矩阵 matrix ,请按照顺时针螺旋顺序返回矩阵中的所有元素。 2 解题思路…fangwei (59)in programming • 4 months ago【LeetCode】59. 螺旋矩阵 II1 题目描述 给定一个正整数 n ,生成一个包含从 1 到 n^2 所有元素的 n x n 正方形矩阵 matrix ,并且这些元素按照顺时针方向螺旋排列。 2 解题思路 此题要求我们生成一个螺旋矩阵,我们可以考虑使用循环来逐层填充矩阵。对于每一层,我们需要依次处理四个边界:上边、右边、下边和左边。 具体来说,我们可以定义四个指针 startX , startY…fangwei (59)in programming • 4 months ago【LeetCode】209. 长度最小的子数组1 题目描述 209. 长度最小的子数组 要求给定一个含有 n 个正整数的数组 nums 和一个正整数 target 。任务是找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。 2 解题思路…fangwei (59)in programming • 4 months ago【LeetCode】977. 有序数组的平方1 题目描述 977. 有序数组的平方 要求给定一个按非递减顺序排列的整数数组 nums ,返回一个新的数组,其中每个元素都是原数组中对应元素的平方,并且新数组也需要是非递减顺序排列的。 2 解题思路…fangwei (59)in programming • 5 months ago【LeetCode】283. 移动零1 题目描述 283. 移动零 要求给定一个整数数组 nums ,编写一个函数将所有的 0 移动到数组的末尾,同时保持非零元素的相对顺序不变。该操作必须在原地完成,即不能使用额外的数据结构来存储数组。 2 解题思路 我们可以使用双指针的方法来解决这个问题: left 指针指向下一个可能放置非零元素的位置。 right…fangwei (59)in programming • 5 months ago【LeetCode】27. 移除元素1 题目描述 27. 移除元素 要求给定一个数组 nums 和一个值 val ,编写一个方法来原地移除数组中所有等于 val 的元素,并返回移除后数组的新长度。不需要保持元素的原始顺序。 2 解题思路 为了在原地修改数组并保证空间复杂度为 O(1),我们可以使用双指针技巧。具体来说,我们使用两个指针 slow 和 fast ,其中 slow…fangwei (59)in programming • 5 months ago【LeetCode】26. 删除有序数组中的重复项1 题目描述 26. 删除有序数组中的重复项 要求给定一个非严格递增排列的整数数组 nums ,要求原地删除数组中的重复元素,使得每个元素只出现一次,并返回删除重复元素后的数组长度。需要注意的是,元素的相对顺序应保持不变。 2 解题思路 本题的关键在于“原地删除”和“保持相对顺序”。由于数组是非严格递增的,我们可以利用双指针技术来解决这个问题。 左指针 (…fangwei (59)in study • 5 months ago【MySQL】04. 事务管理(三):MVCC多版本并发控制(MVCC,Multi-Version Concurrency Control)提供了一种不同于传统锁机制的解决方案,通过维护数据的多个版本,依据特殊的版本比对规则,每个事务仅能看到符合其读视图的数据版本,以此实现 读不加锁、读写不冲突 的效果,在确保事务的隔离性和一致性的同时,更提高了数据库的并发性。 1 快照读与当前读…fangwei (59)in programming • 5 months ago【LeetCode】69. x 的平方根1 题目描述 给定一个非负整数 x ,要求计算并返回 x 的算术平方根的整数部分。需要注意的是,不能使用任何内置的指数函数或运算符来求解该问题。 2 解题思路 本题可以通过二分查找的方法来求解。二分查找是一种在有序数组中查找特定元素的有效算法,对于本题,我们可以通过二分查找的方法在 [0, x] 的范围内寻找满足条件的整数。 初始化 :定义两个指针…fangwei (59)in programming • 5 months ago【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置1 题目解析 34. 在排序数组中查找元素的第一个和最后一个位置 要求在一个非递减排序的数组中找到特定元素 target 的起始位置和结束位置,并且要求的时间复杂度为O(log n),这提示我们使用二分查找法来解决问题。 2 解题思路 本题需要找到目标值在数组中的第一个和最后一个出现的位置。为了达到 O(log n)…