算法题一
2015-10-26 23:52
232 查看
有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现
<?php $arr1 = [4,6,9,11,12,15]; $arr2 = [-20,-18,-10,-9,-4]; $arr3 = [-10,-5,1,3,9]; //结果1: 4, 结果2: -4, 结果3: 1 echo sprintf('结果1: %s, 结果2: %s, 结果3: %s', get_min($arr1), get_min($arr2), get_min($arr3)); function get_min($arr) { //分为3中情况,全是正数,全是负数,正负数都有 //大于或等于0的话,最新就是第一个 if ($arr[0] >= 0) { return $arr[0]; } //全是负数,则绝对值最小是最后一个数字 if (($end = end($arr)) <= 0) { return $end; } $k = 0; foreach($arr as $key => $val) { if ($val >= 0 ) { $k = $key; break; } } //下标是k 和 下标是k-1 做比较 if ($arr[$k] >= abs($arr[$k - 1])) { return $arr[$k - 1]; } return $arr[$k]; }
相关文章推荐
- 移动浏览器前景畅想
- 学习之路
- iptables详解
- 团队博客作业Week5 --- 团队贡献分--分配规则
- 利用Cydia Substrate进行Android HOOK(二)
- 前端开发的小坑
- 51nod 1117 聪明的木匠 (优先队列_STL)
- Android Fragment 真正的完全解析(上)
- 开心的金明
- Spring输入乱码解决方案
- Android应用宣传页和自定义页卡指示器
- Notes on Understanding The Linux Kernel
- 基础功能测试架构
- Linux下安装MySQL
- 鲁棒性是 Robustness
- Memcached使用与实践
- Python下使用help(dict),显示'more'不是内部或外部命令,也不是可运行的程序或批处理文件,该如何处理?
- Memcached与Memcache区别
- 线段树+离散化操作(poj 2528)
- 设置编码规则