美文网首页
Leetcode 83. Remove Duplicates f

Leetcode 83. Remove Duplicates f

作者: persistent100 | 来源:发表于2017-07-24 17:35 被阅读0次

    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.

    分析

    对链表中的重复数据只保留一次。因此使用一个数组来保存数据,不过数组可能有之前运算遗留数据,需要注意搜索时候不要超过数组的长度。C代码如下,已通过。
    对了其实链表是排好序的,直接依次遍历就行了。。。

    int a[100000];
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    struct ListNode* deleteDuplicates(struct ListNode* head) {
        int length=0;
        struct ListNode *p=head,*q=head;
        if(p==NULL)return head;
        a[length]=p->val;
        length++;
        p=p->next;
        while(p!=NULL)
        {
            int j;
            for(j=0;j<length;j++)
            {
                if(a[j]==p->val)
                    break;
            }
            //printf("%d %d %d\n",j,length,p->val);
            if(j<length&&a[j]==p->val)
            {
                q->next=p->next;
                p=p->next;
            }
            else
            {
                a[length]=p->val;
                length++;
                q=p;
                p=p->next;
            }
        }
        return head;
    }
    

    相关文章

      网友评论

          本文标题:Leetcode 83. Remove Duplicates f

          本文链接:https://www.haomeiwen.com/subject/kggbkxtx.html