题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

  1. head 总结赋值后 ,head是不发生改变的、
  2. 使用双指针,相等的时候slow不变,不对等的时候先改变next指针指向fast,然后slow直接跑到fast所在位置,然后fast向下继续走,准备迎接接下来的继续遍历。
  3. 最后slow->next 后的要置NULL,fast为空的时候返回。
  4. 最后返回head
/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if(!head) return NULL;

        ListNode* slow = head;
        ListNode* fast = head;

        while(fast!=NULL){
            if(fast->val!=slow->val){
                slow->next = fast;
                slow = slow->next;
            }

            fast = fast->next;
        }

        slow->next = NULL;


        return head;
    }


};
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务