自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 242.有效的字母异位词

将元素映射到数组的索引。由于字母最多有26个(不区分大小),因此我们可以设置一个长度为26的数组。数组索引为0中存放的内容为s中字母a出现的次数,数组索引为1中存放发内容为s中字母b出现的次数,以此类推。若要判断s和t是否为异位词,只需判断数组中存储的内容是否相同。若要判断元素是否存在的问题,可以想到用哈希表解决。中每个字符出现的次数都相同,则称。,编写一个函数来判断。

2024-03-01 17:17:29 367 1

原创 142.环形链表2

解:可以看作快慢指针的追及问题,快指针每次前移两步,慢指针每次前移1步,如果有环,它们将在环中相遇,根据数学分析,一个指针从头节点出发,每次走一步与另一个指针从相遇节点出发,每次走一步,这两个指针将在入环处相遇。指针再次到达,则链表中存在环。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。如果链表无环,则返回。,则在该链表中没有环。

2024-02-29 15:40:37 330

原创 链表相交问题

由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。

2024-02-28 17:42:59 367

原创 删除链表的倒数第N个结点,并返回链表的头结点

解题:设置快慢指针,先让快指针走n+1步,之后让快慢指针同时后移,直到快指针指向空,此时慢指针指向要删除元素的前一个结点。

2024-02-27 20:45:18 371

原创 24.两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2024-01-03 15:05:35 336 1

原创 206.反转链表

请你反转链表,并返回反转后的链表。

2024-01-02 15:01:13 344

原创 54.螺旋矩阵

--------------以下是大佬的答案---------,返回矩阵中的所有元素。通过设置四个边界来填充元素。

2023-12-26 11:02:51 398 1

原创 59.螺旋矩阵2

所有元素,且元素按顺时针顺序螺旋排列的。

2023-12-25 11:45:06 382 1

原创 904.水果成蓝

我们使用kind_0和kind_1分别存储滑动窗口中包含的两种元素的值,用来做后续判断。我们用high指针从fruits数组下标为0开始向后遍历,找到初始状态的kind_0和kind_1。之后每次循环,我们都让low指针从high指针开始往前遍历,找到包含两种元素的子串。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。可以采摘 [1,2,1,1,2] 这五棵树。可以采摘 [2,3,2,2] 这四棵树。可以采摘 [1,2,2] 这三棵树。

2023-12-21 17:27:48 366 1

原创 209.给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组

此题中我们分别设置两个指针指向子数组的起始位置(low)和结束位置(high)。外层的循环来判断结束位置的指针。如果从low到high的子数组之和大于等于target,就让low指针右移,在此过程中记录子数组的最小长度。为了减少时间复杂度,我们消除两层for循环的方法就是设置两个指针【滑动窗口】。直到子数组之和小于target。让high指针右移。最直观的我们想到暴力法,但是这种方法时间复杂度高。子数组[4,3] 是该条件下的长度最小的子数组。

2023-12-20 19:52:13 563 1

原创 977. 给你一个按非递减顺序排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按非递减顺序 排序。

因此我们用low指针指向数组开头,用high指针指向数组结束,两两比较大小,将更大的平方数填进数组results的最后一个位置中。由于nums数组递减,那么在数组两端的数据平方后一定会产生一个最大值。

2023-12-19 15:39:43 397 1

原创 283.零移动。给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

接着将slow指针和fast指针同时后移一位,此时slow指针一定指向0元素,但fast指针可能并没有指向非0元素。因此让fast指针从此刻位置开始向后扫描,直到找到一个非0元素,重复(*)和(**),直到fast指针将全部元素扫描完成。将fast指针指向的数据复制到slow指针指向的数据中,同时fast指针指向的数据赋0;用fast指针从slow+1开始扫描,指向slow指针之后第一个为0的元素。对nums从左到右扫描,用slow指针指向第一个为0的元素。原地对数组进行操作,考虑快慢指针。

2023-12-11 22:02:45 516

原创 27.移除元素。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

当快指针指向的元素与val相等,就将快指针指向下一个元素,慢指针不动,直到快指针指向一个与val不等的元素,返回(2)当快指针指向的元素与val不相等,快指针将自己指向的元素先赋给慢指针指向的元素,快慢指针都指向下一个元素。其中,快指针去搜索新的元素,慢指针始终指向要更新的元素。右指针从后往前搜索,直到找到一个不为val的元素。左指针从前往后搜索,直到找到一个等于val的元素。将右指针指向的元素复制到左指针指向的元素中去。左指针指向第一个元素,右指针指向最后一个元素。不要使用额外的数组空间,你必须仅使用。

2023-12-11 19:55:57 382 1

原创 69.给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被舍去 。注意:不允许使用任何内置指数函数和算符。

当mid*mid==x时,那么mid就是问题的解。当(mid-1)*(mid-1)<x并且mid*mid>x时,mid-1就是问题的解。在不满足这两种情况时,我们只需要根据mid*mid的大小判断接下来该去mid的左边区域搜索还是右边区域搜索。但是这种算法的时间复杂度为O(n),另一种更好的方法为二分法,可以将时间复杂度降低至O(logn)。

2023-12-07 20:20:10 441

原创 34.给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。

结束位置的指针指向的元素一定比target大,因此在nums[mid]

2023-12-04 21:29:48 845

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除