Lintcode112.刪除排序鏈表中的重複元素

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.感想:題目的解題方法容易考慮,是刪除節點很普遍的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章