1.問題描述:給定一個排序鏈表,刪除所有重複的元素每個元素只留下一個
2.解決思路:判斷當前節點temp和temp->next數據域存放的數據元素的關係,若兩個節點的存放數據相同將 temp->next指向temp->next->next這樣就可以刪掉和temp存放相同元素的temp->next;若不同則temp往後移動,在進行判斷。
3.通過的代碼
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
if(head==NULL){return NULL;}
ListNode *temp=head;
while(temp->next!=NULL){
if(temp->val!=temp->next->val){temp=temp->next;}
else{temp->next=temp->next->next;}
}
return head;
}
};
4.感想:題目的解題方法容易考慮,是刪除節點很普遍的方法