zoukankan      html  css  js  c++  java
  • 求绝对值最小的数

    题目

    有一个升序排列的数组,数组中可能有正数,负数或0. 求数组中元素的绝对值最小的数.
    例如 数组{-10, 05, 02 ,7,15,50} 绝对值最小的是-2

    解答

    #include <bits/stdc++.h>
    using namespace std;
    
    void f(int a[], int len) {
        if (a[len-1] <= 0) {
            cout << abs(a[len-1]) <<endl;
            return ;
        }
        if (a[0] >= 0) {
            cout << a[0] << endl;
            return ;
        }
        // 有正有负
        int l = 0, r = len-1;
        while (l <= r) {
            int m = (l + r) / 2;
            if(a[m] == 0) {
                cout << a[m] << endl;
                return ;
            } else if(a[m] > 0) {
                if(a[m-1] < 0) {
                    int mn = min(abs(a[m-1]), a[m]);
                    cout<< mn <<endl;
                    return ;
                } else if (a[m-1] == 0) {
                    cout << 0 <<endl;
                    return ;
                } else {
                    // a[m-1] > 0
                    r = m-1;
                }
            } else {
                // a[m] < 0
                if(a[m+1] > 0) {
                    int mn = min(abs(a[m]), a[m+1]);
                    cout << mn <<endl;
                    return ;
                } else if(a[m+1] == 0) {
                    cout << 0 <<endl;
                    return ;
                } else {
                    // a[m+1] < 0
                     l = m+1;
                }
            }
    
        }
        return ;
    }
    
    int main()
    {
        int a1[] = {-10, -5, -2, 7, 15 ,50};
        int a2[] = {2,4,6,8,27};
        int a3[] = {-13, -9, -7, -3};
        int l1 = 6, l2 = 5, l3 = 4;
        f(a1, l1);
        f(a2, l2);
        f(a3, l3);
        return 0;
    }
    
  • 相关阅读:
    MySQL性能调优my.cnf详解
    PHP调试工具Xdebug安装配置教程
    【转载】Zend Studio 10正式版注册破解
    SQL 大全(3)
    SQL 大全(1)
    JQuery方法
    修改 C:Users[account name] 目录名称
    wordmate 词典安装
    Python3 之 import 和 当前目录
    初遇 dotcloud
  • 原文地址:https://www.cnblogs.com/Draymonder/p/10703605.html
Copyright © 2011-2022 走看看