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


         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 }
  • 相关阅读:
    ENode 1.0
    ENode 1.0
    ENode 1.0
    canvas转图片
    Canvas API
    微信 js api[转]
    Dicom格式文件解析器[转]
    跟我学AngularJS:全局变量设置之value vs constant vs rootscope vs 服务[转]
    angularJS 事件广播与接收[转]
    RequireJs
  • 原文地址:https://www.cnblogs.com/xshang/p/2881613.html
Copyright © 2020-2023  润新知