地址:http://oj.leetcode.com/problems/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
.
思路:设定两个指针,一个当前遍历指针p,一个前缀指针pre。
参考代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
//SECOND TRIALclass Solution {public :ListNode * deleteDuplicates ( ListNode * head ) {if ( ! head )return head ;ListNode * pre = head , * p = head -> next ;while ( p ){if ( p -> val != pre -> val )pre = p ;elsepre -> next = p -> next ;p = p -> next ;}return head ;}};
python:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @return a ListNode
def deleteDuplicates(self, head):
if not head:
return head
pre = head
cur = head.next
while cur:
if cur.val != pre.val:
pre = cur
else:
pre.next = cur.next
cur = cur.next
return head