Leetcode 83. Remove Duplicates from Sorted List

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;jval)
                break;
        }
        //printf("%d %d %d\n",j,length,p->val);
        if(jval)
        {
            q->next=p->next;
            p=p->next;
        }
        else
        {
            a[length]=p->val;
            length++;
            q=p;
            p=p->next;
        }
    }
    return head;
}

你可能感兴趣的:(Leetcode 83. Remove Duplicates from Sorted List)