- 博客(10)
- 收藏
- 关注
原创 链表之合并k个有序链表
在拆分的时候需要注意,我们用二分法将当前的数组中链表个数分为两部分,其中一部分是从【left->mid】,另一部分是从【mid+1->right 】这样才能将完整的数组拆成两个部分,而不会导致缺失。的思想,即将一个问题拆分成多个小问题,从小问题入手,最后再将一个个的小问题串起来,就解决掉大问题了。数组中存放了多个链表,因此先将数组拆分为多个两两一组的,这样就化简为。的问题,再两两重组之后,最后合成一个大链表,该链表即为最终有序链表。合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。
2023-04-13 22:04:42
747
原创 链表之每k个结点为一组翻转
--因为如果不先指向后一个结点,那么在后续断链的操作时,就会丢失后续的结点,那么后续的遍历也无从谈起了,所以先指向后续结点,再断链。所以在遍历整个链表的时候,需要有个计数器来记录是否已经走完一轮区间了,那么当走完一轮区间之后,将该轮的结点进行翻转。对于 k=2 , 你应该返回 2→1→4→3→5,2→1→4→3→5。对于 k=3 , 你应该返回 3→2→1→4→5,3→2→1→4→5。将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。给定的链表是 1→2→3→4→5,1→2→3→4→5。
2023-04-12 23:30:12
146
原创 链表之指定区间反转
将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度O(n),空间复杂度 O(1)。数据范围: 链表长度 0
2023-04-10 23:39:49
512
原创 链表之删除有序链表中重复的元素
如果是相同结点,那么将前一个结点指向当前结点的下一个结点,这样就起到了删除当前结点的作用。删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次。数据范围:链表长度满足 0≤n≤100,链表中任意节点的值满足 ∣val∣≤100。给出的链表为1→1→2→3→3,1→1→2→3→3,返回1→2→3,1→2→3.此时有一个需要注意,如果此次循环中需要删除当前结点,那么前一个结点的位置是。给出的链表为1→1→2,1→1→2,返回1→2,1→2。因为链表是有序链表,因此。
2023-04-08 20:41:32
772
原创 链表之两个链表的第一个公共结点
输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。情况1、2在遍历完当前链表之后,还需要将其重新指向另一条链表,开始继续遍历,这样就保证了总共遍历的结点个数相同,即必然能找出是否存在公共结点的情况。第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分。
2023-04-08 20:12:55
106
原创 链表之输出链表倒数最后k个结点
而是可以将整个链表想成一把尺子,对应的倒数k个结点可以想成长度为k的短尺子。当移动到长尺子的最后时,再从短尺子的头部开始输出,自然就是长尺子的最后k个结点了。其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。数据范围:0≤n≤10^5,0≤ai≤10^9,0≤k≤10^9。要求:空间复杂度 O(n),时间复杂度O(n)
2023-04-06 23:38:54
108
原创 Activity相关经典问题
如果是在SingleTOP或者SingleTask的启动模式下,已启动过的Activity那么不会再走onCreate和onStart,而是走新的onNewIntent。如果已经存在,将其上方的所有activity全部销毁,和正常的出栈一样,仅仅调一次onNewIntent。场景是以上各类场景,但是如果是正常的用户按下home键退出应用等操作(即用户主动操作)是不会调用的。onStop():Activity被新的Activity完全覆盖不可见时被调用。5、屏幕方向切换时,例如从竖屏切换到横屏。
2023-04-05 22:42:08
478
原创 链表之判断链表是否有环
--当我们设置一个指针以1个节点的步频去移动,再设置另一个指针以2个节点的步频去移动。那么两个指针相对来说就是以每次增加1个节点的步频在不断递增,因此最终移动较快的指针一定可以追上移动较慢的指针,并且此时刚好快的指针比慢的指针多跑了一圈!第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true。第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false。
2023-04-05 19:46:56
446
原创 链表之合并两个排序的链表
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。我们每一次需要去比对当前两个链表的第一个结点的大小关系,然后将小的节点放入新的链表中即可。注:此处的遍历一次链表是指将两个链表的节点重新组合成一个新的链表。已知两个链表已经是有序链表,因此只需要遍历一次链表即可完成排序。数据范围: 0≤n≤1000,−1000≤节点值≤1000。要求:空间复杂度 O(1),时间复杂度 O(n)
2023-04-05 16:29:12
503
原创 链表之反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤1000要求:空间复杂度 O(1) ,时间复杂度 O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
2023-04-03 23:51:30
172
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人