zoukankan      html  css  js  c++  java
  • 数组中出现次数超过一半的数字

    题目描述

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
     1 #include<iostream>
     2 #include<string>
     3 #include<algorithm>
     4 #include<map>
     5 #include<vector>
     6 using namespace std;
     7 class Solution {
     8 public:
     9     int MoreThanHalfNum_Solution(vector<int> numbers) {
    10         sort(numbers.begin(), numbers.end());
    11         int count = 1;
    12         int c = numbers[0];
    13         int c1;
    14         int count1 = 0;
    15         for (int i = 1; i < numbers.size(); i++)
    16         {
    17             if (numbers[i] == c)
    18             {
    19                 count++;
    20                 
    21             }
    22             else
    23             {
    24                 if (count1 < count)
    25                 {
    26                     count1 = count;
    27                     c1 = c;
    28                 }
    29                 count = 1;
    30                 c = numbers[i];
    31             }
    32         }
    33         if (count1 >= (numbers.size() / 2))
    34             return c1;
    35         else
    36             return 0;
    37 
    38     }
    39 };
    40 int main()
    41 {
    42     vector<int> vet{1,2,3,4,5,6,8,2,3 };
    43     Solution s;
    44     cout << s.MoreThanHalfNum_Solution(vet) << endl;
    45     system("pause");
    46     return 0;
    47 }
  • 相关阅读:
    A good habit is half done
    mysql 练习题
    管理的实践
    mysql 表关联时执行顺序
    python 实现短信轰炸
    python django码云第三方登录
    mysql事务的隔离级别
    微服务
    什么是git
    如何使用Hexo创建博客
  • 原文地址:https://www.cnblogs.com/wujufengyun/p/6903920.html
Copyright © 2011-2022 走看看