博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法复习19
阅读量:3747 次
发布时间:2019-05-22

本文共 2373 字,大约阅读时间需要 7 分钟。

链表中环的入口结点

一个链表中包含环,请找出该链表的环的入口结点。

/* public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode EntryNodeOfLoop(ListNode pHead)    {        if(pHead == null || pHead.next == null)            return null;        ListNode p1 = pHead;        ListNode p2 = pHead;        while(p2 != null && p2.next != null ){            p1 = p1.next;            p2 = p2.next.next;            if(p1 == p2){                p2 = pHead;                while(p1 != p2){                    p1 = p1.next;                    p2 = p2.next;                }                if(p1 == p2)                    return p1;            }        }        return null;    }}

删除链表中重复的结点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

/* public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode deleteDuplication(ListNode pHead)    {        ListNode result;            ListNode temp=pHead;            ListNode index=new ListNode(1);            index.next=pHead;            result=index;            while(temp!=null){                if(temp.next!=null&&temp.next.val==temp.val){                    while(temp.next!=null&&temp.next.val==temp.val){                    temp=temp.next;                    }                    temp=temp.next;                    index.next=temp;                }                else{                    index=index.next;                    temp=temp.next;                }            }            return result.next;    }}

二叉树的下一个结点

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

/*public class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;    TreeLinkNode(int val) {        this.val = val;    }}*/public class Solution {    public TreeLinkNode GetNext(TreeLinkNode pNode)    {        if(pNode==null)return null;        if(pNode.right!=null)        {            pNode=pNode.right;            while(pNode.left!=null)            {                pNode=pNode.left;            }return pNode;        }        while(pNode.next!=null)        {            if(pNode.next.left==pNode)return pNode.next;            pNode=pNode.next;        }        return null;    }}

源代码:

转载地址:http://shrin.baihongyu.com/

你可能感兴趣的文章
类的内存模型(二)
查看>>
生产者消费者模型
查看>>
#剑指offer Day2 一类可以用“框架”快速搞定的二叉树问题
查看>>
#剑指offer Day3 一类 “ 斐波那契 ”问题
查看>>
#剑指offer Day4 一类 “ 双指针 ”问题
查看>>
#剑指offer Day5 # 分享两个题的其他解法
查看>>
缓存淘汰算法的实现与应用介绍(LRU,LFU)
查看>>
JZ15. 反转链表
查看>>
1. 两数之和
查看>>
2. 两数相加
查看>>
JZ1.二维数组的查找
查看>>
String 类
查看>>
什么是接口
查看>>
Java高级篇之进程
查看>>
类加载机制
查看>>
了解jdk1.8版本一些新的特性
查看>>
Java高级篇之网络通讯
查看>>
浅谈篇之线程池
查看>>
Lambda 表达式
查看>>
字符串函数MySQL
查看>>