题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

原理:运用双指针,指针p1扫描整个链表,p2在p1的基础上寻找与p1所指结点val值相等的结点;若找到,则对该节点进行删除,之后选择删除结点之前的结点作为p2的指向,继续扫描,p1扫描完整个链表后,返回链表的头节点。

public class Solution {
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        //指针p1(for循环)
        for (ListNode p1 = head; p1!=null; p1 = p1.next) {
            //指针p2(for循环)
            for (ListNode p2 = p1.next; p2!=null; p2 = p2.next) {
                //找到val相等的结点之后的删除操作
                if (p1.val==p2.val) {
                    ListNode p3 = head;
                    while (p3.next!=p2)
                        p3 = p3.next;
                    p3.next = p2.next;
                    p2 = p3;
                }
            }
        }
        return head;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务