阿里巴巴2017校招C++岗位在线编程题-求集合D的最大值,最小值和元素个数三者之和
来源:互联网 发布:怎么读java源码 编辑:程序博客网 时间:2024/06/03 17:58
题目:输入一组正整数为集合N;从N中任意取两个数求和得到集合A;从N任意取两个数求差的绝对值得到集合B;从集合A,B中各取一个数得到集合D;集合D中最大值d1,最小值d2,元素个数为ds,求d1+d2+ds;
思路:简单,按题目顺序来即可,注意集合元素的去重和排序即可。这题考的时候我有点粗心,一个循环遍历中少加了1居然一直没看到,然后我用来做题的电脑上居然没有gdb,没法调试,光从眼睛看居然没有发现该错误,明明代码量这么少(捂脸笑哭)。
#include <iostream>#include <vector>#include <numeric>#include <limits>#include <cmath>#include <algorithm>using namespace std;// 请完成下面这个函数,实现题目要求的功能// 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^int result(const vector <int>& inputs) { vector <int> a; vector <int> b; vector <int> d; int len = inputs.size(); int resultNum = 0; for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++)//就在这个地方少加了1,居然一直没发现 { int calTmp = inputs[i] + inputs[j]; a.push_back(calTmp); } } for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { int calTmp = abs(inputs[i] - inputs[j]); b.push_back(calTmp); } } sort(a.begin(),a.end()); a.erase(unique(a.begin(), a.end()), a.end()); sort(b.begin(),b.end()); b.erase(unique(b.begin(), b.end()), b.end()); int aLen = a.size(); int bLen = b.size(); for (int i = 0; i < aLen; i++) { for (int j = 0; j < bLen; j++) { int calTmp = abs(a[i] - b[j]); d.push_back(calTmp); } } sort(d.begin(),d.end()); d.erase(unique(d.begin(), d.end()), d.end()); sort(d.begin(),d.end()); resultNum = d.front() + d.back() + d.size(); return resultNum;}int main() { int size = 0; cin >> size; cin.ignore (numeric_limits<std::streamsize>::max(), '\n'); vector<int> points; for(size_t i=0; i<size; ++i) { int item; cin >> item; cin.ignore (numeric_limits<std::streamsize>::max(), '\n'); points.push_back(item); } int res = result(points); cout << res << endl; return 0;}
阅读全文
1 0
- 阿里巴巴2017校招C++岗位在线编程题-求集合D的最大值,最小值和元素个数三者之和
- 阿里巴巴2017校招C++岗位在线编程题-RNA嵌套
- 求n个数的最大值和最小值
- 【C#】求10个数的最大值、最小值、平均数。
- 求3个数最大值和最小值的差
- 求3个数最大值和最小值的差
- n个数求最大值和最小值
- 求n个数中最大值和最小值
- 求整型 数组中最大值和最小值元素的距离
- 2014阿里巴巴校招在线笔试题(数据研发工程师岗位)之二叉树
- 阿里巴巴2015秋季校招(客户端开发工程师岗位)在线笔试题
- 求数组元素的最大值最小值
- C#--输入10个数存入数组中,求这10个数的最大值、最小值和平均值。
- 求三个数的最大值和最小值(C程序)
- shell编程小例子——输入10个数,求最大值、最小值和总和
- c/c++编程题 之 求数组的子数组之和的最大值
- 求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。
- 华为编程题之八:求最大值与最小值的和
- 1.5Android 学习+进度之五-wifi地址
- orcale 数据库配置
- Exception 类的层次
- 线程知识小结一
- Java线程
- 阿里巴巴2017校招C++岗位在线编程题-求集合D的最大值,最小值和元素个数三者之和
- linux 查看端口号
- 数据结构与算法分析之二叉树的三种遍历方式。--前序遍历,中序遍历和后序遍历
- 欢迎使用CSDN-markdown编辑器
- @responseBody注解的使用
- TCP/IP协议栈初始化流程
- 设计模式之适配器模式
- C++ 二叉树创建、遍历访问、删除
- SwipeRefreshLayout使用