剑指offer-删除链表中重复的节点

来源:互联网 发布:网络设计好学吗 编辑:程序博客网 时间:2024/06/08 00:44

题目描述

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

import java.util.ArrayList;/* public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode deleteDuplication(ListNode pHead)    {        ListNode result;                    // 1.结果链表头结点(用于返回值)        ListNode temp = pHead;              // 2.当前链表,temp用于对当前链表进行遍历,并排除重复项        ListNode index = new ListNode(1);   // 3.结果链表,index用于对结果链表进行遍历,跟踪temp        index.next = pHead;        result = index;                             while (temp != null) {            // (1).temp对出现重复项数据进行排除            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;            }             // (2).不是重复项就赋值给index保存            else {                index = index.next;                temp = temp.next;            }        }        return result.next;    }}
0 0
原创粉丝点击