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] << " ";
        }
    }
    
  • 相关阅读:
    Spring中使用RedisTemplate操作Redis(spring-data-redis)
    Cron表达式
    自己搭建v,p,n过程
    CentOS 7安装与配置jdk-8u162
    .net自动生成版本号
    关于webapi 返回的类型的笔记
    多个系统间交互-灰度发布-一些笔记
    Unity的使用
    mysql中查询"_"这种特殊字符
    关于MVC中DropDownListFor的一个bug
  • 原文地址:https://www.cnblogs.com/outxiao/p/13671814.html
Copyright © 2011-2022 走看看