算是第一次一次AC的题
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
.
分析:
1. list是空的
2. list 非空
起始条件,中止条件,起始条件和中止条件重合
起始条件:head
中止条件:遍历到最后一个点(非None点),因为要比较每个点和它的后一个点,所以不是None点
起始条件和中止条件重合:list只有一个点,成立
3. 综合来看,ok
# 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 head==None:
return head
tra = head
while tra.next!=None:
if tra.next.val == tra.val:
tra.next = tra.next.next
else:
tra = tra.next
return head
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if (head==NULL){
return head;
}
ListNode* tra;
tra = head;
while (tra->next!=NULL){
if (tra->val==tra->next->val) {
tra->next = tra->next->next;
}else{
tra = tra->next;
}
}
return head;
}
};