- 博客(6)
- 收藏
- 关注
原创 黄金挑战 | K个一组反转
1.因为要分组反转,所以要一组一组处理,将其分为已反转,正在反转,等待反转三个部分,同时,为了方便头节点的处理,新建一个虚拟节点。2.遍历,根据是否为K个找到4个关键位置,并用变量pre,start,end,next标记。1.先遍历链表得出链表长度len,确定分组n = len/k。4.将截下来的部分再缝到原始链表上,调整指针指向。5.最后调整几个变量的位置,为下一组反转做准备。3.将要反转部分截断后进行反转。
2023-11-21 12:18:46
73
原创 链表反转拓展
leetcode445:给你两个非空链表来代表两个非负整数,数字最高位位于链表开始位置,它们的每个节点只存储一位数字,将这两数相加返回一个新的链表。思路:先将两个链表的元素分别压栈,然后一起出栈,将两个结果分别计算,之后对计算结果取模,余数保存到新的链表中,进位保存到下一轮,完成后再进行一次反转就行。这个题目的难点在于存放是从最高位向最低位开始的,但是因为低位会产生进位的问题,计算的时候必须从最低位开始,所以想办法将链表的节点反转过来。3.在最后,如果进位 carry 不为 0,那么最后需要计算进位。
2023-11-15 18:06:46
65
原创 黄金挑战之双向链表
static class ListNode{//节点是链表的属性,所以用static来修饰//节点成员//头插法//尾插法//在任意节点位置插入,假设第一个节点下标为0//查找是否包含关键字key是否在单链表中//删除第一次出现关键字为key的节点//删除所有值为key的节点//得到链表的长度//打印链表内容//删除链表//创建一个节点if(head == null){//无元素情况return;return;链表长度size()
2023-11-03 15:50:53
71
原创 输入两个链表,找出它们的第一个公共节点
公共节点一定存在第一轮遍历,那么La的长度为L1,Lb的长度为L2,长度差的绝对值为|L1-L2|;第二轮遍历让长的先走|L1-L2|步,然后再同时向前走,直到找到相同节点即为公共节点。先将一个链表元素全部存到Map里,然后一边遍历第二个链表,一边检测Hash中是否存在当前结点,如果有交点,那么一定能检测出来。需要用到两个空间为o(n)的栈,分别将两个链表的节点入两个栈,然后出栈,如果两个节点相等就继续出栈,直到找到最晚出栈的那组。stack.pop() :从栈中移除并返回栈顶的元素。
2023-10-17 22:27:59
240
原创 算法通关村-第一关青铜挑战-链表
链表(linked list)是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成。单向链表的每一个节点又包含两部分,一部分是存放数据的变量data,另一部分是指向下一个节点的指针next。4. }链表的第1个节点被称为头节点,最后1个节点被称为尾节点,尾节点的next指针指向空(NULL)。双向链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。
2023-10-16 23:47:35
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人