58同城 后端编程题第二题五颜六色的“帮小帮”

输入   1,1,2
输出    5

意思是, 第一个人知道还有一个人颜色跟他相同,第二个知道还有一个人颜色跟他相同,第三个知道还有2个人颜色跟他相同。
前两个可以认为是颜色一致,所以至少有一共5个人。

输入要求是用逗号隔开,例如:1,1,2,2,2,3,3,3,3

自己写的代码如下,只a了60%,不知道哪有错,求大佬指点下。
思路是:输入当个数组 num[i]。
存入把 num[i] 作为key存入hashmap,并设value为num[i],
遇到相同的num值,value-1;
减到0后又置为num[i];
最后统计所有values值得和+num.length就是最后的输出

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s1=sc.nextLine();
        String[] s2=s1.split(",");
        int []num=new int[s2.length];
        for (int i = 0; i < s2.length; i++) {
            num[i]=Integer.parseInt(s2[i]);
        }
        sc.close();
        int res=solution(num)+num.length;
        System.out.println(res);
    }

    public static int solution(int[]num){
        HashMap<String,Integer>hmap=new HashMap<String, Integer>();
        for (int i = 0; i < num.length; i++) {
            if(!hmap.containsKey("num[i]")){
                hmap.put("num[i]",num[i]);
            }else{
                if(hmap.get("num[i]")==0){
                    hmap.replace("num[i]",num[i]+1);
                }
                int temp=hmap.get("num[i]")-1;
                hmap.replace("num[i]",temp);
            }
        }
        Collection<Integer> values=hmap.values();
        Iterator<Integer> iterator=values.iterator();
        int sum=0;
        while(iterator.hasNext()){
            sum+=iterator.next();
        }
        return sum;
    }
}


#58集团##笔试题目#
全部评论
我就想问,第一题为啥没有python!😫,再次被编译器坑
点赞 回复
分享
发布于 2019-09-16 21:45
牛客原题,“糖果谜题”
点赞 回复
分享
发布于 2019-09-16 21:46
春招专场
校招火热招聘中
官网直投
第一题为啥80 想了半天想不出来
点赞 回复
分享
发布于 2019-09-16 21:49
求第三题,有没有大佬第三题写出来了,给个思路呗
点赞 回复
分享
发布于 2019-09-16 22:08
set去重 求和 再加去重后的元素数量 就是结果
点赞 回复
分享
发布于 2019-09-16 22:42

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务