牛客网---2016---腾讯微信红包

来源:互联网 发布:java html5 视频播放 编辑:程序博客网 时间:2024/06/07 03:49

老实说,我TMD有点难受,周末本打算去火锅店把卡退了,老人家一个微信告诉我,4点左右实验室来个人,结果嘞,人到了5点我也没看到,啧啧,算了,没事,昨天和对象玩的很好,就很棒,无敌,图片不丢了,这种东西太辣眼睛了。。。另外啊,我今天的淘宝出问题了,还好又好了。。。

这里写图片描述

题目:
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。
若没有金额超过总数的一半,返回0。
输入:

[1,2,3,2,2],5

输出:

2

解析:
1 . 没什么重点,就是从左到右,找到目前为止最多的节点
解题所需函数:
代码:

import java.util.*;public class Gift {    public int getValue(int[] gifts, int n) {        // write code here        if(gifts.length<n){            return 0;        }        if(gifts.length==0){            return 0;        }        int count=0,temp=0;        // 用于确定截止到目前为止,出现数目最多的点,啧啧        for(int i=0; i<n; i++){            // 遍历所有数据            if(count==0){                // 确定临时函数                temp=gifts[i];                count=1;            }else{                if(temp==gifts[i]){                    count++;                }else{                    count--;                }            }        }        int size=0;        for(int i=0; i<n; i++){            if(temp==gifts[i]){                size++;            }        }        return (size>n/2)?temp:0;    }}