zoukankan      html  css  js  c++  java
  • 百度面试题求绝对值最小的数

         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 }
  • 相关阅读:
    css
    js
    css3
    css
    深浅拷贝
    index-数据结构/算法
    es6知识点
    在vscode中配置sass savepath
    计算机基础
    element-ui使用后手记
  • 原文地址:https://www.cnblogs.com/xshang/p/2881613.html
Copyright © 2011-2022 走看看