zoukankan      html  css  js  c++  java
  • Colidity-- EquiLeader

    由于要满足equi-leader,则必须是整个数组的leader,证明如下:leader > i+1/2 && leader > (n-i-1)/2,那么leader > n/2

    我之前c++写了,但是有错五

     1 static int equiLeader(int[] a){
     2   int len = a.length;
     3   int equi_leaders = 0;
     4 
     5   // first, compute the leader
     6   int leader = a[0];
     7   int ctr = 1;
     8 
     9   for(int i = 1; i < a.length; i++){
    10     if(a[i] == leader) ctr++;
    11     else ctr--;
    12     if(ctr == 0){
    13       ctr = 1;
    14       leader = a[i];
    15     }
    16   }
    17 
    18   // check if it's a leader?
    19   int total = 0;
    20   for(int i : a){
    21     if(i == leader) total++; 
    22   }
    23 
    24   if(total <= (len/2)) return 0; // impossible
    25 
    26   int ldrCount = 0;
    27   for(int i = 0; i < a.length; i++){
    28     if(a[i] == leader) ldrCount++;
    29     int leadersInRightPart = (total - ldrCount);
    30     if(ldrCount > (i+1)/2   &&   leadersInRightPart > (len-i-1)/2){
    31       equi_leaders++;
    32     }
    33   }
    34 
    35   return equi_leaders;
    36 }
  • 相关阅读:
    C语言考点例题解析
    五笔打字
    常用快捷键
    网络基础知识
    人口增长
    8 封装
    9 绑定方法和非绑定方法
    6 抽象类
    7 多态和多态性
    5 组合
  • 原文地址:https://www.cnblogs.com/cane/p/3977436.html
Copyright © 2011-2022 走看看