欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝买小电影怎么搜索 编辑:程序博客网 时间:2024/06/05 02:57

已知一个整数序列A={a0,a1,…,an-1},其中0<=ai<=n(0<=i

int Majority(int* array, int length) {    int count = 1;    int candidate = array[0];    for (int i = 1; i < length; i++) {        if (candidata == array[i) count++        else if (count > 0) count--;        else {            candidate = array[i];            count = 1;        }        if (candidate > length / 2) return candidate;    }    count = 0;    for (int i = 0; i < length; i++)        if (candidate == array[i]) count++;    if (count > length / 2) return candidate;    else return -1;}

另可使用哈希表(因题目说明0<= ai < n)即可线性O(n)时间内统计所有元素出现次数,但是额外空间也为O(n)。

0 0
原创粉丝点击