自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

happyhuidi的博客

Hello!程序媛

  • 博客(8)
  • 收藏
  • 关注

原创 剑指offer 52. 两个链表的第一个公共结点

1.问题描述输入两个链表,找出它们的第一个公共结点。说明:应该是两个单向链表,成Y字型,不会成X型,也不会成环。2.解决思路链表只能从表头单向访问,可以利用栈的后进先出特性来实现,把两个链表压入栈再弹出来,但是那样需要两个辅助栈,如果两条链表的长度分别是m和n,则需要m+n个辅助栈空间,同时时间复杂度为O(m+n)。使用两个指针:先遍历计算链表的长度,让长链表的指针先走| m-...

2018-09-17 11:04:29 207

原创 剑指offer 23. 链表中环的入口

1.问题描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。2.解决思路2.1 思路11)先判断链表是否有环;2)如果有环,假设环里面有n个结点,除去环之外有m个结点,使用快慢指针fast和slow,开始都指向头结点head,每次移动一个结点:    设fast指针先走x了步,我们希望slow指针从1结点经过m步到达第m+1个结点(即环入口)的时候...

2018-09-16 23:37:02 122

原创 剑指offer 25. 合并两个排序的链表

1.问题描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。2.解决思路1)非递归的方法    如果可以改变链表,直接从头结点开始依次移动比较两个链表当前值的大小,把较小的值作为当前结点的下一个结点。   注意:刚刚开始的时候不知道头结点到底是1的还是2的,所以新建一个额外的新节点作为辅助:   ListNode *first =...

2018-09-16 21:37:11 98

原创 剑指offer 22. 链表中倒数第k个结点

1.问题描述输入一个链表,输出该链表中倒数第k个结点。2.解决思路由于链表只能从头结点开始遍历,所以我们需要知道链表总共有多少个结点,需要遍历一次知道长度n;1)使用一个指针,遍历链表两次:    第一次:遍历一次得到链表的长度n;    第二次:需要打印出倒数第k个,也就是正数的第n-k+1个;2)使用两个指针,遍历链表一次:    第一个指针node1:先走x步...

2018-09-14 17:18:09 130

原创 剑指offer 附加1. 删除链表中的重复结点

1.问题描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5.2.解决思路1)链表为空,无重复;2)链表只有一个结点,不存在重复;3)链表有2个以上结点:考虑头结点是否会被删除的特例  a)为了防止头结点...

2018-09-14 15:46:19 115

原创 剑指offer 24. 反转链表

1.问题描述输入一个链表的头结点,反转链表后,输出新链表的表头。2. 解决思路  1)链表是空的:直接返回空的头结点;  2)链表中只有一个结点:直接返回原头结点;  3)链表中有大于2个以上的结点:需要三个指针来辅助    a)头结点的下一个结点为空结点NULL;    b)要对每个结点逐一遍历并反转,需要辅助指针node1来遍历;    c)由于需要改变每个结点...

2018-09-13 21:49:28 115

原创 链表节点的增加和删除

链表是一种动态的数据结构,因为在创建链表时,不需要知道链表的长度,只需要对指针进行操作。1. 链表的定义struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x), next(NULL){}};2. 在链表的末尾增加一个节点解决思路:分原来的链表是空链表和非空链表的情况;特别注意:函数的第一个...

2018-09-13 12:11:59 14342 2

原创 剑指offer 06. 从尾到头打印链表

1.问题描述输入一个链表的头结点,按链表值从尾到头的顺序返回一个ArrayList。2. 解决思路由于是反向打印,所以是一个“后进先出”的问题,使用栈来解决,虽然递归的本质就是一个栈结构,但是当链表非常长的时候,函数调用的层级很深,可能会导致函数调用栈溢出,鲁棒性不够好。3. 代码实现1)基于栈的代码实现如下:/*** struct ListNode {* ...

2018-09-13 11:57:24 136

空空如也

空空如也

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

TA关注的人

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