NC73数组中出现次数超过一半的数字

NC73数组中出现次数超过一半的数字

- 1、题目描述:
图片说明

- 2、题目链接:
https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=117&tqId=37770&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high%2Fquestion-ranking&tab=answerKey

-3、 设计思想:
图片说明
详细操作流程看下图:
图片说明

-5、代码:
c++版本:

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        int cnt = 0;//票数
        int res = 0;//最终返回的结果
        for(int i = 0;i < numbers.size();i ++){
            if (cnt == 0) res = numbers[i];//如果票数为0就更新出现次数多的那个
            cnt += ((numbers[i] == res)? 1 : -1);
        }
        cnt = 0;
        for(int i = 0;i < numbers.size();i ++){//检查res出现的次是否超过了数组长度的一半
            if(res == numbers[i]) cnt ++;
            if(cnt > (numbers.size()/2)) return res;
        }
        return 0;
    }

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java岗位面试真题宝典 文章被收录于专栏

本面试宝典均来自校招面试题目大数据进行的整理

全部评论

相关推荐

11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务