题解 | #数组中出现次数超过一半的数字#

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

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;
class Solution {
public:
   
    int MoreThanHalfNum_Solution(vector<int>& numbers) {
        if(numbers.size()==1){
            return numbers[0];
        }
         std::sort(numbers.begin(),numbers.end());   
         int Foud=numbers.size()/2;//中间次数
         int a=0;
         int firstpoint=1;
         int lastpoint=1;
         for(lastpoint=1;lastpoint<numbers.size();lastpoint++){
            if(numbers[lastpoint]==numbers[lastpoint-1]){//我这个firstpoint意义不大,本来想前后指针,发现不用
                numbers[firstpoint]=numbers[lastpoint];
                ++firstpoint;
                ++a;//及时更新次数
            }
            if(a>=Foud){
                return numbers[firstpoint-1];//返回上一个比较的值
            }
            if(numbers[lastpoint]!=numbers[lastpoint-1]){
                a=0;//不相等重置a
            }
         }
        
           return -1;
        }
};

全部评论

相关推荐

点赞 评论 收藏
分享
_mos_:我以为手抄报简历就已经很顶了,没想到还有表格简历
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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