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

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

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

注意事项

这道题其实很简单,但是需要注意一下链表保存的节点,head节点是否是保存数据的节点,比如牛客中就是,也有一些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==NULL || head->next == NULL)
            return head;
        if(head->next->next == NULL)
        {
            if(head->val==head->next->val)
            {
                head->next = NULL;
                return head;
            }
        }
        ListNode* xxx = head->next;
        ListNode* bef= head;
        while(xxx!=NULL)
        {
            ListNode* cur = xxx->next; //保存下一个节点数据
            if(bef->val == xxx->val)
            {
                xxx->next = NULL;         //将当前xxx节点释放
                bef->next = cur;
                xxx = cur;
            }
            else
            {
                bef = xxx;
                xxx = xxx->next;
            }
            
        }
        return head;
    }
};
全部评论

相关推荐

程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务