• 第十届蓝桥杯大赛软件类省赛研究生组 试题H:修改数组


    第十届蓝桥杯大赛软件类省赛研究生组 试题H: 修改数组

    问题描述:

    给定一个长度为N的数组A=[A1,A2,···AN],数组中有可能有重复出现的整数。现在小明要按以下方法将其修改为没有重复整数的数组。
    小明会依次修改A2,A3,···,AN。当修改Ai时,小明会检查Ai是否在A1∼Ai−1中出现过。
    如果出现过,则小明会给Ai加上1;如果新的Ai仍在之前出现过,小明会持续给Ai加1,直到Ai没有在A1∼Ai−1中出现过。
    当AN也经过上述修改之后,显然A数组中就没有重复的整数了。现在给定初始的A数组,请你计算出最终的A数组。
    

    这道题LeetCode有类似的,只是表达方式不同。

    算法思想

    1.定义一个unordered_map<int,int> 来存储不重复的输入数据和频率。
    2.当输入一个数,判断当前数是否在map中,如果输入的数(key)对应的value ==1 ,则让输入的数字+1,如此往复。
    3.在map中,插入不重复的元素。
    

    C/C++实现

    void no_repeat(){
        int n = 0,temp;
        cin >> n;
        int m[n];
        unordered_map<int,int> ele;
        for(int i = 0;i < n;i++){
            cin >> temp;
            while (ele[temp] == 1) temp++;
            ele[temp] = 1;
            m[i] = temp;
        }
        for(int i = 0;i < n;i++){
            cout << m[i] << " ";
        }
    }
    
  • 相关阅读:
    管道通讯
    C++类型转换
    自定义数组容器MyArray框架
    vue 转场动画
    身份证信息 获取年龄性别生日
    element ui +vue 输入 身份证号获取 性别 年龄 籍贯
    获取地理位置
    post 下载二进制pdf文件
    post 文件下载二进制流
    遍历对象的几中方法
  • 原文地址:https://www.cnblogs.com/outxiao/p/13671814.html
Copyright © 2020-2023  润新知