有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间。
2017-01-13 20:19
295 查看
int findMaxDifBt2Nums(int* arr, int len) { int maxItem = arr[0], minItem = arr[0]; for (int i = 1; i < len; ++i) { if (arr[i] > maxItem) { maxItem = arr[i]; } if (arr[i] < minItem) { minItem = arr[i]; } } //间距 int bar = (maxItem - minItem) / (len - 1); int (*bucket)[2] = new int[len][2]; memset(bucket, 0, sizeof(int) * len * 2); for (int i = 0; i < len; ++i) { int pos = (arr[i] - minItem) / bar; if (bucket[pos][0] == 0) { bucket[pos][0] = bucket[pos][1] = arr[i]; } else { if (arr[i] > bucket[pos][1]) { bucket[pos][1] = arr[i]; } if (arr[i] < bucket[pos][0]) { bucket[pos][0] = arr[i]; } } } int maxDif = 0; int* tmp = NULL; for (int i = 1; i < len; ++i) { if (bucket[i][0] != 0) { if (!tmp) { tmp = bucket[i]; continue; } maxDif = max(maxDif, bucket[i][0] - tmp[1]); tmp = bucket[i]; } } delete[] bucket; return maxDif; }
相关文章推荐
- 有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间。
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 有无序的实数列 V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空 间和线性时间
- 在线性时间和空间复杂度内,求大小相邻两元素之差的最大值
- 最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
- 大数据面试题求解:给定n个实数 ,求着n个实数在实轴上向量2个数之间的最大差值,要求线性的时间算法(最大间隙问题)
- 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。
- 谷歌面试题--一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间
- 最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- 无序数组O(n)时间找到排序后的两个相邻元素使得他们之间的差最大
- 删除线性表中所有值为x的元素,要求时间复杂度为O(n),空间复杂度为O(1)
- 求一个整型数组的最大和的子数列,要求时间复杂度为线性的
- 数据结构与算法——有1亿个整数,找出最大的1000个,要求时间越短越好,空间占用越少越好
- 现有1,2……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且只能交换两个数
- 编写一个PHP函数。求任意n个正负整数里面最大的连续和,要求算法时间复杂度尽可能低
- 给一个数组[a1,a2,a3....an],要求出令ai-aj有最大值,其中i<=j,时间和空间复杂度尽可能小