zoukankan      html  css  js  c++  java
  • 第十届蓝桥杯大赛软件类省赛研究生组 试题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] << " ";
        }
    }
    
  • 相关阅读:
    ubuntu开机挂载磁盘盘出现:Metadata kept in Windows cache, unable to mount
    ubuntuaptgetoldversion
    evince 41.2ubuntu 16.04snap
    ubuntu坚果云安装deb后启动不了
    电影票分析
    jieba分词讲解2
    期末总结建议
    软件架构师工作看法
    jieba分词讲解1
    1
  • 原文地址:https://www.cnblogs.com/outxiao/p/13671814.html
Copyright © 2011-2022 走看看