求排序数组的元素的绝对值的最小值
来源:互联网 发布:下载dreamweaver软件 编辑:程序博客网 时间:2024/05/16 15:32
题目:一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值。
思路:一个简单的思路,就是一次性遍历数组,求出数组的元素的绝对值的最小值,这样的时间复杂度为O(n)。但是,这样就浪费了题目的一个条件:数组是已经排好序的。所以,需要对原来的题目进行转换。考虑到数组有序,则元素绝对值的最小值为数组中最大负数的绝对值与最小非负数的绝对值的最小值。于是,题目事实上是去查找原数组中负数集合中的最大值。而在一个有序序列中进行查找,则优先考虑二分法,时间复杂度为O(log n)。
int GetMinAbs(int* arr, int len){int low, mid, high;low = 0;high = len - 1;mid = (low + high) / 2;while (low <= high){if (mid == len - 1){break;}else{int temp = arr[mid] * arr[mid + 1];if (temp <= 0){return abs(arr[mid]) < abs(arr[mid + 1]) ? abs(arr[mid]) : abs(arr[mid + 1]);}else{if (arr[mid] > 0){high = mid - 1;}else{low = mid + 1;}}mid = (low + high) / 2;}}if (arr[0] > 0){return abs(arr[0]);}else{return abs(arr[len - 1]);}}
- 求排序数组的元素的绝对值的最小值
- 求排序数组的元素的绝对值的最小值
- 求排序数组的元素的绝对值的最小值
- 求数组中绝对值最小的元素
- 求一个数组差的绝对值的最小值
- 求一给定数组元素的最小值
- 求数组元素的最大值最小值
- JavaScript求数组元素的最大/最小值
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 求一个已排序的数组中绝对值最小的元素
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 百度面试题:从已排序的数组中求绝对值最小的元素
- 求升序数组中绝对值最小的元素
- 微软面试:输出整型数组任意两个元素差的绝对值的最小值
- 求一个排序数组中绝对值最小的数
- js 求数组中元素的最大值最小值
- 求整型 数组中最大值和最小值元素的距离
- 求旋转数组的最小值
- 17周体会函数传递2
- gcc __attribute__(())
- 59
- 根据日期字符串或者日期求出星座及属相。
- linux 串口驱动
- 求排序数组的元素的绝对值的最小值
- java程序启动画面
- 解决strus2中文乱码
- audio system分析之audiotrack.java
- Hadoop安装端口已经被占用问题的解决方法
- google面试题
- leetcode7: Unique Binary Search Trees
- CCI习题1-1:String Contain Unique Char
- linux下安装apache