自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode刷题笔记——61. 旋转链表

3、使用k对n取模得到m,由于是向右移动,所以从头结点出发遍历链表,第n-m个结点作为头结点,但由于是单向链表,所以只能遍历到m结点的前一个结点,该结点的下一个结点就是最终的头结点,然后将该结点指向null。1、遍历一遍链表,统计出链表长度n,也得到链表最后一个结点;2、让链表最后一个结点的next指向第一个结点。

2023-08-21 17:33:24 141 1

原创 leetcode刷题笔记——42. 接雨水

空间优化:不适用额外的数组保存备忘录,仅保留两侧的最高高度。初始的lh=height[0]和rh=height[len-1],随着lh和rh覆盖的范围更大,某一时刻,如果有lh<rh,那么lh范围内最右边的元素,其接雨水高度就是左侧最高高度-该柱子高度,lh可以继续右移,同理,rh覆盖范围在rh>lh时也可以左移,直至二者范围交叉,即可跳出循环。进阶思路:备忘录,n位置柱子左边最高高度等于n-1位置柱子左边最高高度与n位置柱子高度的最大值,那么可以提前经过一次遍历,存下每一个柱子左右两边最高高度。

2023-08-21 17:13:37 69 1

原创 leetcode刷题笔记——732. 我的日程安排表 III

考虑到数组较大且时间是线性的,我们可以结合线段树与动态开点实现,对于一个数据范围l~r,线段树中从1到n的结点是与其有着一一对应的关系的,1——l~r,2——l~mid,3~mid+1~r,mid=(l+r)>>1,按照此规律一直二叉裂变下去;思路1:创建两个容器,一个存放预定成功的区间,一个放预定过两次的区间,每次的新时间先看是否有与两次的区间重合的,有则说明冲突,返回false,没有则遍历预定成功区间,找出预定过两次的区间并存入,再将新时间放入预定成功的区间,返回true。

2023-08-21 16:32:35 115 1

原创 leetcode刷题笔记——27. 移除元素

思路:本题返回移除后数组的新长度,可以记录需要移除的数量,并用总长度减去;本题要求原地修改输入数组,具体做法是,遍历数组,等于移除元素时,移除数量+1,将移除元素移动到后边,考虑到移除元素不止一个,那么,每次移动后的位置必然是len-res,同时原本该位置的数也需要进行比较,因此需要将遍历因子i-1,保证比较此位置的新元素。

2023-08-19 10:27:26 77

原创 leetcode刷题笔记——86. 分隔链表

然后遍历链表,使用small.next=head或large.next=head将链表中的结点添加到<x和≥x的链表,然后再使用small=head或large=head将small和large后移,以便再次添加新结点。2、朴素的思想是遍历链表,将需要移动的结点逐个放到第一个≥x的结点之前,于是需要一个额外的结点动态更新指向这个位置;由于是单向链表,只能由前一个结点找到后一个结点,因此需要指向的是该节点的前边,同时也需要考虑该结点是链表中的点还是新创建的点。

2023-08-19 10:21:42 34

原创 leetcode刷题笔记——105. 从前序与中序遍历序列构造二叉树

思路:二叉树根节点G,左子树L,右子树R,前序遍历为GLR,中序遍历为LGR,后续遍历为LRG,前中后指G与L和R的相对位置。前序遍历第一个元素及后序遍历最后一个元素是根节点,拿根节点在中序遍历中可以确定左右子树,递归执行此过程,直至数组长度为0。

2023-08-18 11:07:01 35 1

原创 leetcode刷题笔记——554. 砖墙

在每一行,两块砖头之间有缝隙,当在某个位置经过的缝隙数量最多时,穿过的砖头数量就最少,用int[high][weigh]保存缝隙的信息,1表示砖块的边缘,也就是缝隙的位置。弊端:对于很宽的砖头组成的墙,需要很大的数组,但缝隙数量却不一定多,而根据我们的思路,关注的是缝隙的数量。注意:最后一块砖后边的缝隙其实是墙的边缘,不考虑,使用数组方法可以控制不遍历,但是用哈希无法控制,只能不降其放入哈希中。改进:用hash保存1到weigh位置上,缝隙的数量,对于频繁插入、更新和查询,哈希速度较快且保证位置的唯一性。

2023-08-18 10:12:37 81 1

原创 leetcode刷题笔记——49. 字母异位词分组

思路:组成单词的字母种类和对应个数相同,只大写或小写时只有26中,创建一个长度26的数组,0~25存放a~z的个数,使用Arrays.equals(arrA,arrB)比较相同即为异位词。类似题目——242. 有效的字母异位词。

2023-08-17 19:51:15 38 1

原创 leetcode刷题笔记——15. 三数之和

2.考虑到时间复杂度,可以在双重循环确定第一元素nums[first]和第二位元素nums[second]后,第三位初始值为nums[second+1],第四位初始值元素为nums[len-1],当和大于target时,第四位元素左移,和小于target时,第三位元素右移,当等于target时,记录数据,第三和第四位分别右移、左移至与当前数不同的位置,时刻注意first

2023-08-15 17:10:47 86

原创 leetcode刷题笔记——3. 无重复字符的最长子串

思路:以第一个字串为无重复子串,持续引入后续的新字符。1、无重复子串中包含新字符:无重复条件被打破,则新的无重复子串起始位置为新字符在原无重复子串位置的后一位;2、无重复子串中不包含新字符:无重复子串起始位置不变,长度加一。

2023-08-14 18:53:01 93

空空如也

空空如也

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

TA关注的人

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