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; } }