百度面试题--求绝对值最小的数

     from:  http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html

     有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现

例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

     原文用java写的,没看太懂,但很感谢博主的算法思路,即找正负数的临界值。于是我用C++实现了一遍,代码如下:

复制代码
 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int getMinNum(int arr[],int n)
 5 {
 6     int index=0;
 7     int temp;
 8     if(arr[index]>0)
 9         return arr[index];
10     else if(arr[index]<0&&arr[n-1]<0)
11         return abs(arr[n-1]);
12     else
13     {
14         for(int i=index;i<n;i++)
15         {
16             if(arr[i]<0)
17                 continue;
18             else
19             {
20                 temp=abs(arr[i-1]);
21                 if(arr[i]<=temp)
22                     temp=arr[i];
23                 return temp;    
24             }
25         }
26     }
27 }
28 int main()
29 {
30     int arr[]={-20,-13,-4,6,77,200};
31     int minNum;
32     minNum=getMinNum(arr,6);
33     cout<<"the abs min num is "<<minNum<<endl;
34     return 0;
35 }
复制代码

 

 

posted @   xshang  阅读(262)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示