华为机试题:整数排序
2016-02-02 21:51
225 查看
描述: | 实现输入一组大于等于0的整数,根据从小到大的顺序排序后输出,排序后有连续数时,只输出连续数中最小和最大的两个数。 |
题目类别: | 排序 |
难度: | 高级 |
运行时间限制: | 10Sec |
内存限制: | 128MByte |
阶段: | 入职前练习 |
输入: | 一组大于等于0的整数,不考虑非法输入,各个整数之间以逗号(“,”)分隔, 输入字符串的总长度小于等于100个字节。 |
输出: | 排序后的值,各个整数之间以空格分隔。 |
样例输入: | 1,4,3,110,2,90,7 |
样例输出: | 1 4 7 90 110 |
#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;
}
相关文章推荐
- 找出升序数组中和为给定值的两个数字
- iPhone屏幕像素 分辨率 xcode中的逻辑宽高的介绍以及strcut与class的区别
- Python Redis数据结构服务器
- node.js 资料
- HDU 4560解题报告
- 数论之高次同余方程(Baby Step Giant Step + 拓展BSGS)
- 排序算法总结
- POJ--1300--Door Man【推断无向图欧拉通路】
- axure笔记--变量值在页面之间的传递
- 自己定义html中a标签的title提示tooltip
- 张正友标定论文翻译(2)
- Arduino接口-week4-Lesson1
- 多线程(一)
- alamofire语法已经变化 3.1.5版本
- VC使用GDI+绘图
- 算法题14 最低公共祖先
- 张正友标定论文翻译(1)
- ZooKeeper应用场景
- 如何实现JSP网页模板 JSP网页母版
- eclipse下使用github