华为机试题:整数排序

来源:互联网 发布:淘宝中的延长收货 编辑:程序博客网 时间:2024/04/20 22:55

描述: 

实现输入一组大于等于0的整数,根据从小到大的顺序排序后输出,排序后有连续数时,只输出连续数中最小和最大的两个数。

 题目类别: 排序 难度: 高级 运行时间限制:10Sec内存限制:128MByte阶段: 入职前练习 输入: 

一组大于等于0的整数,不考虑非法输入,各个整数之间以逗号(“,”)分隔, 输入字符串的总长度小于等于100个字节。

 输出: 

排序后的值,各个整数之间以空格分隔。

 样例输入:
1,4,3,110,2,90,7                   
样例输出:
1 4 7 90 110


#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <algorithm>#include <map>#include <vector>using namespace std;int main(){    char str[101] = {0};    char *token = NULL;    vector<int> vec;    int data = 0, i = 0, lens = 0;    cin >> str;    token = strtok(str,",");    while(token != NULL)    {        data = atoi(token);        vec.push_back(data);        token = strtok(NULL,",");    }    sort(vec.begin(),vec.end());    lens = vec.size();    for(i = 0; i < lens; i++)    {        if(i == 0)        {            cout << vec[i];        }        else        {            cout << " " << vec[i];        }        if(i < lens - 1 && (vec[i+1] - vec[i] == 1))        {            while((i < lens - 1) && (vec[i+1] - vec[i] == 1))            {                i++;            }            cout << " " << vec[i];        }    }    cout << endl;    return 0;}


0 0
原创粉丝点击