zoukankan      html  css  js  c++  java
  • 左边全是1,右边全是0的数组,求解1的个数

    好久没写了,昨天看到935上的这样的选择题,求解的是时间复杂度,看到选项里有logn,于是想出利用二分查找的方法来进行计算,只是出递归的条件改为此数为0,左侧是1或者此数为1,右侧为零

    贴上简单的C实现,如果有更好的算法,请留言

     1 #include<stdio.h>
     2 
     3 void judge(int a[],int left,int right,int *num)
     4 {
     5     int mid=(left+right)/2;
     6     
     7     if(a[mid]==1)
     8     {
     9         if(a[mid+1]==0)
    10         {
    11             *num=mid+1;
    12             return;
    13         }
    14         else
    15             judge(a,mid+1,right,num);
    16     } 
    17     else
    18     {
    19         if(a[mid-1]==1)
    20         {
    21             *num=mid;
    22             return;
    23         }
    24         else
    25             judge(a,left,mid-1,num);
    26     }
    27 }
    28 
    29 int main()
    30 {
    31     int a[19] = {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0};
    32     
    33     int num=0;
    34     
    35     judge(a,0,18,&num);
    36     
    37     printf("%d
    ",num);
    38 }
  • 相关阅读:
    PHP乘法表
    通过闭包可以返回局部变量
    FZU2125_简单的等式
    FZU2122_又见LKity
    FZU2121_神庙逃亡
    UVA12585_Poker End Games
    UVA12583_Memory Overow
    HDU4647_Another Graph Game
    HDU4646_Laser Beam
    HDU4787_GRE Words Revenge
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/8555048.html
Copyright © 2011-2022 走看看