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

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


    思路分析:

    假设一个数字出现的次数超过了数组长度的一半,那么排完序后,肯定要在数组的中间,再去不断遍历比较,判断数字最多的数是不是超过了一半长度,有点上次华东交大的平均数那题的感觉,不能去直接暴力解,多想想有没更快而且简便的方法。

    代码如下:

    class Solution {
    public:
        int MoreThanHalfNum_Solution(vector<int> numbers) {
          sort(numbers.begin(),numbers.end());
            int result=numbers[numbers.size()/2];
            int count=0;
            for(int i=0;i<numbers.size();i++)
            {
                if(result==numbers[i])
                {
                    count++;
                }
            }
            return count>numbers.size()/2?result:0;
        }
    };
    
  • 相关阅读:
    python web 2
    python web1(解析url)
    webstrom 今天突然要激活
    数组排序 记录一下
    浏览器添加随机数去除缓存
    vue-cli 安装报错
    vue 初始化项目报错
    深拷贝和浅拷贝
    css3 属性 clip-path
    js数组去重
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779960.html
Copyright © 2011-2022 走看看