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;
}
}
查看12道真题和解析