• 顺序有序表中删除多余元素


    总时间限制: 1000ms 内存限制: 65535kB

    描述

    编写算法,在一个非递减有序的顺序表中删除所有值相等的多余的元素。要求时间复杂度为O(n),空间复杂度为O(1)。

    输入

    两行,第一行为数据元素的个数n,第二行为n个元素,n<=1000000

    输出

    删除多余元素后的数据序列

    样例输入

    10
    -1 -1 1 2 2 3 3 3 4 5

    样例输出

    -1 1 2 3 4 5


    ac代码

    /*
    @File     :   sqlist_extraElement_delete.cpp
    @Time     :   2020/03/19
    @Contact  :   levarz@163.com
    @Desc     :   顺序有序表中删除多余元素
    */
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    #define LEN 1000010
    //顺序表
    typedef struct 
    {
       int date[LEN]; //数据域
       int len;       //顺序表长度
    }sqlist;
    /**
     * @brief Create a sqlist object
     * 
     * @param list 指向需要创建的顺序表指针
     * @param len  需要创建的顺序表长度
     */
    void create_sqlist(sqlist *&list, int len);
    /**
     * @brief 删除非递减有序顺序表中多余元素
     * 
     * @param lsit 指向需要删除元素的顺序表指针
     */
    void delete_extral_elements(sqlist *&lsit);
    /**
     * @brief display list
     * 
     * @param list 指向需要显示的顺序表指针
     */
    void display(sqlist *&list);
    
    int main(int argc, char const *argv[])
    {
        sqlist *list;
        int n;
        cin >>n;
        create_sqlist(list,n);
        delete_extral_elements(list);
        display(list);
        system("pause");
        return 0;
    }
    void create_sqlist(sqlist *&list, int len)
    {
        list = (sqlist*)malloc(sizeof(sqlist));
        for (int i = 0; i < len; i++) {
            cin >>list->date[i];
        }
        list->len = len;
    }
    void delete_extral_elements(sqlist *&lsit)
    {
        int j = 0;
        for (int i = 1; i < lsit->len; i++) {
           if (lsit->date[j]!=lsit->date[i]) {
               lsit->date[++j] = lsit->date[i];     //自身储存
               lsit->date[j]   = lsit->date[i];     //没有多余开辟空间
           }
        }
        lsit->len = j+1;
    }
    void display(sqlist *&list)
    {
        for (int i = 0; i < list->len; i++) {
            cout <<list->date[i] <<" ";
        } 
    }
    
  • 相关阅读:
    使用ueditor实现多图片上传案例——Servlet层(UploadServlet)
    使用ueditor实现多图片上传案例——截取字符串层Util(SubString_text)
    [转载]oracle删除数据后的恢复
    [转载]oracle删除数据后的恢复
    为什么在定义hashcode时要使用31这个数呢?
    为什么在定义hashcode时要使用31这个数呢?
    [转载]hashCode和equals
    [转载]hashCode和equals
    Oracle HINT的用法
    Oracle HINT的用法
  • 原文地址:https://www.cnblogs.com/levarz/p/12779048.html
Copyright © 2020-2023  润新知