首页 > 编程语言 > 详细

剑指offer 66题 -- 数组中出现的次数超过一半的数

时间:2017-03-02 23:59:02      阅读:286      评论:0      收藏:0      [点我收藏+]

class Solution {
public:
  int MoreThanHalfNum_Solution(vector<int> numbers) {
    if(numbers.empty())
      return 0;

    int count =0;
    int midVal =0;
    int tobesorted =0;
   

          //排序算法
    int i=0,j=0;
    for (i = 1; i < numbers.size(); ++i)
    {
      j = i;
      tobesorted = numbers[i];

      while (j > 0 && tobesorted < numbers[j - 1])
      {
        numbers[j] = numbers[j - 1];        

          //由于前面的数组已经是排好序的,那么只需要找到第一个低于当前值,放于其前面就好了
        j--;
      }

      numbers[j] = tobesorted;
    }

 


    midVal = numbers[numbers.size()/2];
    for(int i=0; i<numbers.size(); ++i)
    {
      if(midVal == numbers[i])
      ++count;
    }


    if(2*count > numbers.size())
      return midVal;
    else
      return 0;
  }
};

剑指offer 66题 -- 数组中出现的次数超过一半的数

原文:http://www.cnblogs.com/shewell/p/6492704.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!