zoukankan      html  css  js  c++  java
  • 找出数组中出现出现一半以上次数的数(一)

    老师留了这道微软面试题 并给出了解题思路

         j用于临时存储数组中的数据,count用于存储某个数出现的次数。
         开始时k存储数组中的第一个数,count为0,如果数组出现的数于j相等,则j加1,否则就减1,如果j为0,就把当前数组中的数赋给j
         因为指定的数出现的次数大于数组长度的一半,所有count++与count--相抵消之后,最后count的值是大于等于1的,j中存的那个数就是出现最多的那个数。

    #include <iostream>
    using namespace std;
    
    int search(int A[], int size)
    {
        if (NULL == A || size<= 0)
        {
            return-1;
        }
    
        int count = 0;
        int j;
        for (int i = 0; i<size; i++)
        {
            if (count == 0)
            {
                j= A[i];
                count = 1;
    
            }
            else
            {
                if (A[i] == j)
                    count++;
                else
                    count--;
            }
    
    
        }
        return j;
    }
    int main()
    {
        int A[6] = { 1,2,2,5,5,5 };
        cout << search(A,6)<<" ";
        return 0;
    }

  • 相关阅读:
    python3之Django内置模板标签和过滤器
    JavaScript(1)
    python3之Django基础篇
    CSS
    HTML
    python3之SQLAlchemy
    python3之memcached
    web服务器-nginx虚拟主机
    web服务器-nginx默认网站
    web服务器-Nginx下载限速
  • 原文地址:https://www.cnblogs.com/lyhao/p/5503070.html
Copyright © 2011-2022 走看看