博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题29:数组中出现次数超过一半的数字
阅读量:4091 次
发布时间:2019-05-25

本文共 1643 字,大约阅读时间需要 5 分钟。

int MoreThanHalfNum_Solution1(int* numbers, int length){    if(CheckInvalidArray(numbers, length))        return 0;     int middle = length >> 1;    int start = 0;    int end = length - 1;    int index = Partition(numbers, length, start, end);    while(index != middle)    {        if(index > middle)        {            end = index - 1;            index = Partition(numbers, length, start, end);        }        else        {            start = index + 1;            index = Partition(numbers, length, start, end);        }    }     int result = numbers[middle];    if(!CheckMoreThanHalf(numbers, length, result))        result = 0;    return result;}

bool CheckInvalidArray(int* numbers, int length){    g_bInputInvalid = false;    if(numbers == NULL && length <= 0)        g_bInputInvalid = true;    return g_bInputInvalid;}bool CheckMoreThanHalf(int* numbers, int length, int number){    int times = 0;    for(int i = 0; i < length; ++i)    {        if(numbers[i] == number)            times++;    }     bool isMoreThanHalf = true;    if(times * 2 <= length)    {        g_bInputInvalid = true;        isMoreThanHalf = false;    }    return isMoreThanHalf;}

int MoreThanHalfNum_Solution2(int* numbers, int length){    if(CheckInvalidArray(numbers, length))        return 0;     int result = numbers[0];    int times = 1;    for(int i = 1; i < length; ++i)    {        if(times == 0)        {            result = numbers[i];            times = 1;        }        else if(numbers[i] == result)            times++;        else            times--;    }     if(!CheckMoreThanHalf(numbers, length, result))        result = 0;     return result;}

你可能感兴趣的文章
地图Api
查看>>
iOS中几种定时器
查看>>
博客园居然还在运营
查看>>
Netty 实现HTTP文件服务器
查看>>
朴素贝叶斯文本分类简单介绍
查看>>
Devexpress GridView 列中显示图片
查看>>
windows本地提权对照表(转载)
查看>>
Java中线程的通讯
查看>>
阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
查看>>
java包装类型的坑
查看>>
关于ASP.Net中页面事件加载的先后顺序
查看>>
使用boost.python静态库
查看>>
winform窗体程序运行后怎样隐藏?
查看>>
Visual Studio Code 代理设置
查看>>
IO多路复用机制(Reactor模式)
查看>>
C# 五大修饰符
查看>>
模块—— 序列化模块、random模块、os模块 、 sys模块、hashlib模块、collections模块...
查看>>
asp.net 使用Master模板页需要注意
查看>>
SpringMVC4+thymeleaf3的一个简单实例(篇一:基本环境)
查看>>
BD基础01
查看>>