剑指offer-链表
lupa1521
这个作者很懒,什么都没留下…
展开
-
从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路:从头到尾读取链表并将结点放到栈中,然后弹出栈中元素并放到队列中,读取队列元素即从尾到头返回链表。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {...原创 2019-04-05 23:32:48 · 76 阅读 · 0 评论 -
55、链表入环节点
思路:快慢指针,快指针一次两步,慢指针一次一步相遇时,慢指针不变,快指针指向头部再次遍历,各一步,相遇时则是入环节点public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ListNode fast=pHead; ListNode slow...原创 2019-05-12 10:23:28 · 623 阅读 · 0 评论 -
36、两个链表第一个公共节点
https://blog.csdn.net/lupa1521/article/details/90114428原创 2019-05-11 22:16:11 · 81 阅读 · 0 评论 -
16、合并两个排序链表
思路:一个链表为空,返回另一个链表新建链表头结点比较两个链表元素,较小值放在新链表前面,递归调用public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2; if...原创 2019-05-11 22:01:02 · 96 阅读 · 0 评论 -
15、反转链表
四句话ListNode L=head.next;//保存当前头节点下一个节点 head.next=pre;//将当前头节点下一个节点指向上一个节点 pre=head;//将当前节点设为上一个节点 head=L;//将保存的节点设为头节点 public class Solution { ...原创 2019-05-11 21:49:13 · 145 阅读 · 0 评论 -
14 链表中倒数第k个结点
思路:快慢指针快指针先走k步,快慢一起走,快指针到链表末尾,慢指针指向倒数第k个结点public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head==null || k<=0) return null; Lis...原创 2019-05-11 21:42:37 · 71 阅读 · 0 评论 -
57删除链表中重复节点
57.在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。思路:先新建一个头节点,然后向后查找值相同的节点,重复查找后删除public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null)...原创 2019-05-04 15:30:49 · 82 阅读 · 0 评论 -
56、链表中入环节点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:定义快慢两个指针,相遇后(环中相汇点)将快指针指向pHead 然后一起走,每次往后挪一位,相遇的节点即为所求。详细分析:相遇即p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2x=n+x; n=x;可以看出p1实际走了一个环的步数,再让p2指向...原创 2019-05-04 15:14:08 · 185 阅读 · 0 评论 -
56、删除链表中重复结点
避免删除头结点public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead==null) return null; ListNode first=new ListNode(-1); first.ne...原创 2019-05-12 10:23:35 · 80 阅读 · 0 评论