找出整数数组中两个数差值的绝对值最小
来源:互联网 发布:斗鱼 网络视听许可证 编辑:程序博客网 时间:2024/06/10 13:33
有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。 下面是一个结发了,利用了stl 的sort 来晚成排序。
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdio>
#include <cmath>
using namespace std;
#define N 100
#define M 200
int inline dis(int a, int b)
{
return abs(a-b);
}
void print(int & a)
{
cout <<" " << a << " ";
}
int main()
{
int i, min , tmp;
vector<int> vi;
srand(time(NULL));
for( i = 0 ; i < N ; i ++)
vi.push_back((tmp = rand() % M,tmp %2 == 0 ? -tmp : tmp));
sort(vi.begin(),vi.end(),less<int>());
//for_each(vi.begin(),vi.end(),print);
for(i=1 ; i < vi.size() ; i ++) ...{
tmp = dis(vi[i-1],vi[i]);
if(i == 1) ...{min = tmp; continue;} if(!tmp) ...{ min = 0 ; break;}
if(tmp < min ) min = tmp;
}
cout <<endl << "Minimal distance is : " << min << endl;
return 0;
}
#include <vector>
#include <ctime>
#include <cstdio>
#include <cmath>
using namespace std;
#define N 100
#define M 200
int inline dis(int a, int b)
{
return abs(a-b);
}
void print(int & a)
{
cout <<" " << a << " ";
}
int main()
{
int i, min , tmp;
vector<int> vi;
srand(time(NULL));
for( i = 0 ; i < N ; i ++)
vi.push_back((tmp = rand() % M,tmp %2 == 0 ? -tmp : tmp));
sort(vi.begin(),vi.end(),less<int>());
//for_each(vi.begin(),vi.end(),print);
for(i=1 ; i < vi.size() ; i ++) ...{
tmp = dis(vi[i-1],vi[i]);
if(i == 1) ...{min = tmp; continue;} if(!tmp) ...{ min = 0 ; break;}
if(tmp < min ) min = tmp;
}
cout <<endl << "Minimal distance is : " << min << endl;
return 0;
}
看过有这样的一种解法,找出数组中最大值和最小值,把所有的数map 到这个区间的bit 数组中。 那么两个相邻的bit 为 1 的两个bit 位置的差值最小的就是这个值。如果有相同的数值,那么会map 到一个bit 位上,那么最小的绝对值就是 0 了。
- 找出整数数组中两个数差值的绝对值最小
- 找出整数数组中两个数差值的绝对值最小
- 找出有序数组中绝对值最小的数
- 【EMC笔试题】N个整数中找出三个数,使其和的绝对值最小
- 二分查找的一个题---找出排序数组中绝对值最小的数
- 找出有序数组中绝对值最小的元素
- 找出有序数组中绝对值最小的元素
- 【查找】在按照绝对值排序的数组中,找出和为k的两个数的下标
- 找出数组中不同的两个数
- java 随机长度10位数组,输入两个数字,找出差值最小的
- 求一个排序数组中绝对值最小的数
- 从一个数据元素无序的整型数组中找出最小的两个数的下标
- 在一堆数中找出最小的两个数
- 如果给定一个数组arr[0,...N-1],要求找出相邻两个数的最大差值
- 有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。
- 有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。
- 有一个整数数组,请求出两两之差绝对值最小的值, 记住,只要得出最小值即可,不需要求出是哪两个数。
- 一道面试题:有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。
- Java对象池技术的原理及其实现的小结。
- 三五个人十来条枪 如何走出软件作坊成为开发正规军
- 你、我的《无以言退》
- 文件操作eof()的问题
- OLEDB
- 找出整数数组中两个数差值的绝对值最小
- Zune离iPod还有多远?
- ADO
- 浅谈CPU中的缓存技术原理
- SQL语句查询结果由行变为列
- C#3.0入门系列(十)-之Join操作
- MFC下加载自定义真彩色工具条
- C#3.0入门系列(十一)-之In, Like操作
- C#3.0入门系列(十二)-Lambda表达式中Lifting