• 发帖水王的加强版


      发帖水王:一堆数中有一个数字出现的次数多于1/2,问那个数?

      比较简单的思路就是两个变量,一个记录当前的数字a,另一个记录当前数字出现的次数size,下一个数字与a相同的时候,size++,不同的时候:size>1,则size--;否则更新a,size=1;

      

      加强版:一堆数中有3个数字出现的次数多于1/4,问是哪三个数?

      思维迁移,用3个{a,size}量保存当前更新的数,下一个数字的时候,看这三个里面是否有这个数字存在,若是,则相应的size++;否则,找出sizez最小的那个量,size>1,则size--;否则更新a,size=1;

      

    #include<stdio.h>
    #include<iostream>
    #include<queue>
    using namespace std;
    
    struct data{
        int a;
        int size;
    }s[3];
    
    int main(){
        int n,i,temp,j;
    
        for(i=0;i<3;i++){
            s[i].a=0;
            s[i].size=0;
        }
        scanf("%d",&n);
    
        for(i=1;i<=n;i++){
            scanf("%d",&temp);
    
            bool same=0;
            int sj,min=99999999;
            for(j=0;j<3;j++){
                if(s[j].a==temp){
                    same=1;
                    sj=j;
                    break;
                }
                if(min>s[j].size){
                    min=s[j].size;
                    sj=j;
                }
            }
    
            if(same==1){
                s[sj].size++;
            }else{
                if(s[sj].size==0){
                    s[sj].size=1;
                    s[sj].a=temp;
                }else{
                    s[sj].size--;
                }
            }
        }
    
        for(i=0;i<=2;i++){
            printf("%d
    ",s[i].a);
        }
    
    
        getchar();
        getchar();
        return 0;
    }
    View Code
  • 相关阅读:
    图片切换的练习
    固定定位
    绝对定位
    相对定位
    全局作用域 变量声明
    3种循环语句 JS基础
    解除绑定事件 和 封装兼容性addEvent 来处理针对于不同浏览器的兼容方法
    插入排序法 猴子选大王 检索的数组 验证身份证号码 练习
    [z]JSONP例子
    ireport related
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3495760.html
Copyright © 2020-2023  润新知