LeetCode--Remove Duplicates from Sorted List

 

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

 

LeetCode上很简单的一道题,处理链表将链表中重复的数值去除只保留一个。大致流程如下:

1.先判断链表是否为空或只有一个结点,是的话直接返回,否则进行一般处理。

2.head为前一个结点,nextNode为后head指向的后一个节点,nextNode不为空时说明没有到达链表尾部,进入while循环。

3.注意head.val==nextNode.val时,考虑超过两个重复值的情况,将head的下一节点指向nextNode的下一个节点,去除nextNode,head结点不变。

 head.val!=nextNode.val时,head后移指向nextNode。

   最后将nextNode赋值为next指向的下一节点,继续循环比较。

 


 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode result = head;
        if(head==null||head.next==null)
            return head;
        else{
            ListNode nextNode = head.next;
            while(nextNode!=null){
            if(head.val == nextNode.val)
                head.next = nextNode.next;
            else
                head = nextNode;
            nextNode = head.next;
            }
        }
        return result;
    }
}

 

posted @ 2014-10-21 09:53  buptzjf  阅读(150)  评论(0编辑  收藏  举报