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


    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

     1 class Solution {
     2 public:
     3     //法一:排序,找到中间那个,然后遍历求出中间那个出现的次数,如果大于一般就返回中间数,否则返回0
     4     //法二:选择一个计数器,初始值为1,从第二个数开始遍历,如果这个数和前一个数相同那么计数器加1,否则减1.
     5     //如果计数器的值为0,那么重新选择下一个元素为起始,计数器重新置位1。
     6     int MoreThanHalfNum_Solution(vector<int> numbers) {
     7         int len=numbers.size();
     8         if(len==0) return 0;
     9         int result=numbers[0];
    10         int count=1;
    11         for(int i=1;i<len;i++)
    12         {
    13             if(count==0)
    14             {
    15                 count=1;
    16                 result=numbers[i];
    17             }
    18             else
    19             {
    20                if(numbers[i]==result)
    21                 count++;
    22                 else count--;
    23             }
    24         }
    25         //判断reslut是否符合条件
    26         count=0;
    27         for(int i=0;i<len;i++)
    28         {
    29             if(result==numbers[i]) count++;
    30         }
    31         return  count>len/2?result:0;
    32     }
    33 };
  • 相关阅读:
    缓存一致性问题
    缓存雪崩
    mysql Replication机制
    数据库水平切分、拆库拆表
    mysql分表和分区实际应用简介
    mysql中间件
    mysql基础知识
    go语言redis使用(redigo)
    nginx location配置与rewrite配置
    PDO驱动使用
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/7885611.html
Copyright © 2020-2023  润新知