腾讯笔试编程题:两两二元组差最小最大对数(C++)
来源:互联网 发布:北邮java课程设计 编辑:程序博客网 时间:2024/05/29 07:15
题目:
小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
输入描述:
输入包含多组测试数据。
对于每组测试数据:
N - 本组测试数据有n个数
a1,a2…an - 需要计算的数据
保证:
1<=N<=100000,0<=ai<=INT_MAX.
输出描述:
对于每组数据,输出两个数,第一个数表示差最小的对数,第二个数表示差最大的对数。
输入例子:
6
45 12 45 32 5 6
输出例子:
1 2
思路:
先排序,然后对有序数组分别求差值最大的对数和差值最小的对数。
排序之后,
差值最大的好求,看有序数组有几个最小值和几个最大值,相乘即可。
差值最小的,由于是有序数组,必定是相邻的差值较小,故由排序后的有序数组求出差值最小值。如果差值最小值为0,则算出数组中相等的元素的对数;如果差值最小值不为0,则只需计算有多少个最小值即可。
答案:
#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ int n; while (cin>>n) { vector<int> nums(n); for (int i=0; i<n; i++) { cin>>nums[i]; } int minNum=0, maxNum=0; //排序 sort(nums.begin(), nums.end()); //最大 int m1 = 0, m2 = n-1, a=1, b=1; while (nums[m1+1] == nums[m1]) { a++; m1++; } while (nums[m2] == nums[m2-1]) { b++; m2--; } maxNum = a*b; //最小 int minTemp=nums[n-1]; for (int i=1; i<n; i++) { if (nums[i]-nums[i-1]<minTemp) { minTemp = nums[i]-nums[i-1]; } } if (minTemp >0) { for (int i=1; i<n; i++) { if (nums[i]-nums[i-1] == minTemp) { minNum++; } } }else{ for (int i=1; i<n; i++) { int j=i-1; while (nums[j]==nums[i] && j>=0) { minNum++; j--; } } } cout<<minNum<<" "<<maxNum<<endl; } return 0;}
2 0
- 腾讯笔试编程题:两两二元组差最小最大对数(C++)
- 腾讯2017年实习生编程题目(第三题)——有趣的数字 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 腾讯校招笔试——小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 有趣的数(最大最小差值二元组对数)
- 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- 求数圈中乘积最大和最小的两对数
- 网易笔试编程题:两种排序方法(C++)
- N个数划分两组,差最小
- 数字序列中的最大差和最小差对数
- 百度的两道笔试编程题
- py两序列和差最小
- 两堆西瓜的质量差最小
- 求数组两两之差绝对值最小的值
- 求出数组两两之差绝对值最小的值
- 求数组两两之差绝对值最小的值
- 安装cocoa pods遇到的最难解决的一个问题
- 开启技术写作之路
- 面试15:链表中倒数第K个结点
- 路径 ./和../以及/之间的区别?
- PHP中比较两个时间的大小与日期的差值
- 腾讯笔试编程题:两两二元组差最小最大对数(C++)
- 类和对象基本概念
- Class.getResource()、ClassLoader.getResource()、ClassLoader.getSystemResource()区别
- Could not find com.afollestad:material-dialogs:0.7.3.1 解决
- github项目资源集
- jquery对象与js对象的相互转换
- Quartz 2D编程指南之三:路径(Path)
- 你需要管理员权限...
- Java基础(2)--流程控制