• 数组最小(百度面试题目)对升序数组,求数组中绝对值最小的元素


    最近研究数组最小,稍微总结一下,以后继续补充:

        有一个经已排序的数组(升序),数组中可能有正数、正数或0,求数组中元素的绝对值最小的数,
    求要,不能用序顺较比的方法(复杂度须要小于O(n)),可以用使任何言语现实
    例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。
    算法现实的基本思路:
    找到正数和正数的分界点,如果正好是0就是它了,如果是正数,再和左面相邻的正数绝对值较比,如果是正数,取取绝对值与左面正数较比。还要斟酌数组只有正数或正数的情况。

        每日一道理
    漫漫人生路,谁都难免会遭遇各种失意或厄运。在凄风苦雨 惨雾愁云的考验面前,一个强者,是不会向命运低头的。风再冷,不会永远不息;雾再浓,不会经久不散。风息雾散,仍是阳光灿烂。
    #include<stdio.h>
    #include<stdlib.h>
    //数组有序的情况下,寻觅绝对值最小的数 
    int getAbsMin(int arr[],int N)
    {
       if(N<=0)  throw "Invalid Arguments";
       int left=0;
       int right=N-1;
       if(arr[left]>=0) return arr[left];
       if(arr[right]<=0) return arr[right];
       int mid;
       while(true)
       {
          mid=(left+right)/2;
          if(arr[mid+1]<0) left=mid+1;
          else if(arr[mid]>0) right=mid-1;
          else if(arr[mid]+arr[mid+1]>=0) return arr[mid];
          else return arr[mid+1]; 
       }   
    }
    
    
    int main()
    {
        int array[]={-11,-3,-3,3,3,5,8};
        printf("%d\n",getAbsMin(array,7));
        system("pause");
        return 0;
    }

        
     

    文章结束给大家分享下程序员的一些笑话语录: 腾讯的动作好快,2010年3月5日19时28分58秒,QQ同时在线人数1亿!刚刚看到编辑发布的文章,相差才2分钟,然后连专题页面都做出来了,他们早就预料到了吧?(其实,每人赠送10Q币,轻轻松松上两亿!)

  • 相关阅读:
    C. Shaass and Lights 解析(思維、組合)
    D. Binary String To Subsequences(队列)(贪心)
    CodeForces 1384B2. Koa and the Beach (Hard Version)(贪心)
    CodeForces 1384B1. Koa and the Beach (Easy Version)(搜索)
    CodeForces 1384C. String Transformation 1(贪心)(并查集)
    CodeForces 1384A. Common Prefixes
    POJ-2516 Minimum Cost(最小费用最大流)
    POJ3261-Milk Patterns(后缀数组)
    HDU-1300 Pearls(斜率DP)
    HDU-4528 小明系列故事-捉迷藏(BFS)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3067623.html
Copyright © 2020-2023  润新知