• 华为往年笔试题【去重和排序】【vertor二维数组,迭代器】


    题目:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

     Input Param

    n               输入随机数的个数

    inputArray      n个随机整数组成的数组

    Return Value

    OutputArray    输出处理后的随机整数

    注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

    自己比较笨的解法:

     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4  
     5  
     6 using namespace std;
     7  
     8 void uniq_sort(vector<int> & array){
     9         for(vector<int>:: iterator it = array.begin(); it != array.end();it++){
    10                 for (vector<int>:: iterator jt = it+1 ; jt != array.end();)
    11                 {
    12                         if(* jt < * it)
    13                         {
    14                                 int temp = * it;
    15                                 * it = * jt;
    16                                 * jt = temp;
    17                                 jt ++ ;
    18                         }
    19                         else if(* jt == * it){
    20                                 jt = array.erase(jt);
    21                         }
    22                         else
    23                         {
    24                                 jt ++ ;
    25                         }
    26                 }
    27         }
    28 }
    29  
    30 int main(){
    31  
    32         vector<vector<int>> init_array;
    33         int n = 0;
    34         /*if(cin >> n)
    35         {
    36                 for(int i = 0 ; i < n ; i ++){
    37                         cin >>
    38                 }
    39         }*/
    40         while(cin >> n){
    41                 vector<int> temp_array;
    42                 for(int i = 0 ; i < n ; i ++){
    43                         int temp;
    44                         cin >> temp;
    45                         temp_array.push_back(temp);
    46                 }
    47                 init_array.push_back(temp_array);
    48                 //test_num ++;
    49                 //init_array.push_back(n);
    50         }
    51         for(int i = 0; i < init_array.size() ;i++){
    52                 uniq_sort(init_array[i]);
    53                 for( int j = 0; j < init_array[i].size() ; j++ )
    54                 {
    55                         cout << init_array[i][j] << endl;
    56                 }
    57                 //cout << endl;
    58         }
    59         return 0 ;
    60 }

    大神机智解法:

    因为题目中限制了1-1000内的随机整数

     1 #include <iostream>
     2 using namespace std;
     3 int main() {
     4     int N, n;
     5     while (cin >> N) {
     6         int a[1001] = { 0 };
     7         while (N--) {
     8             cin >> n;
     9             a[n] = 1;
    10         }
    11         for (int i = 0; i < 1001; i++)
    12             if (a[i])
    13                 cout << i << endl;
    14     }
    15     return 0;
    16 }
  • 相关阅读:
    C++中操作符函数
    C++中的类
    大型网站系统架构的演化
    GitHub初体验(小菜新手github用起来)
    黄聪:Adobe CS4 中文版 完美破解版下载
    WIN7下回收站不小心删除的文件怎么恢复,免费数据恢复软件下载
    PowerDesigner使用教程
    黄聪:CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
    ORACLE SEQUENCE用法
    C++ DirectUI库收集
  • 原文地址:https://www.cnblogs.com/lijiaxin/p/10658161.html
Copyright © 2020-2023  润新知