求排序数组的元素的绝对值的最小值
来源:互联网 发布:大数据新闻案例 编辑:程序博客网 时间:2024/04/29 22:44
题目:一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值。
思路:一个简单的思路,就是一次性遍历数组,求出数组的元素的绝对值的最小值,这样的时间复杂度为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 求数组中元素的最大值最小值
- 求整型 数组中最大值和最小值元素的距离
- 求旋转数组的最小值
- 如何选择Windows Embedded操作系统
- Foxmail添加微软最新outlook.com邮箱解决方案
- 也说也做小的cms系统
- JAVA NIO 简介
- SQL LIKE语句多条件贪婪匹配算法
- 求排序数组的元素的绝对值的最小值
- Vim使用总结
- 在坚持学习的道路上总会有烦躁的时候
- android之数据库的使用案例
- 构建你的shell函数库
- hdu 1081 To The Max
- 忘记Oracle用户名密码的解决方案
- 软件工程初总结
- LeetCode: Balanced Binary Tree