• careercup-链表 2.1


    2.1 编写代码,移除未排序链表中的重复节点。

    不使用临时缓存:

    如果不允许使用临时的缓存(即不能使用额外的存储空间),那需要两个指针, 当第一个指针指向某个元素时,第二个指针把该元素后面与它相同的元素删除, 时间复杂度O(n2 )。

    C++实现代码:

    #include<iostream>
    #include<new>
    using namespace std;
    
    struct ListNode
    {
        int val;
        ListNode *next;
        ListNode(int x):val(x),next(NULL) {}
    };
    
    void createList(ListNode *&L)
    {
        int arr[10]= {1,2,3,2,5,6,7,3,9,1};
        int i;
        ListNode *p=NULL;
        for(i=0; i<10; i++)
        {
            ListNode *tmp=new ListNode(arr[i]);
            if(L==NULL)
            {
                L=tmp;
                p=tmp;
            }
            else
            {
                p->next=tmp;
                p=tmp;
            }
        }
    }
    
    void deleteDup(ListNode *L)
    {
        if(L==NULL)
            return;
        ListNode *p=L;
        ListNode *q=NULL;
        while(p)
        {
            q=p;
            while(q->next)
            {
                if(q->next->val==p->val)
                    q->next=q->next->next;
                else
                    q=q->next;
            }
            p=p->next;
        }
    }
    
    int main()
    {
        ListNode *head=NULL;
        createList(head);
        ListNode *p=head;
        while(p)
        {
            cout<<p->val<<" ";
            p=p->next;
        }
        cout<<endl;
        deleteDup(head);
        p=head;
        while(p)
        {
            cout<<p->val<<" ";
            p=p->next;
        }
        cout<<endl;
    }

    运行结果:

  • 相关阅读:
    pytest.4.Fixture
    pytest.3.Assert
    pytest.2.运行多个文件
    [LeetCode 378.] Kth Smallest Element in a Sorted Matrix
    priority_queue 自定义 comparator
    原地调整法查找数组元素
    [LeetCode 436.] Find Right Interval
    [LeetCode 611.] Valid Triangle Number
    二叉树Morris遍历
    用户态IO:DPDK
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4141163.html
Copyright © 2020-2023  润新知