VIPkid笔试,编程第一题脑袋大,求助。。
编程第一题:
输入一组数,例如-1,2,-2,3,0,-0,1,5 求这个数组里两两组合,如a,b,求a+b=0;这样的数对有多少个,(a,b)和(b,a)算一个。
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String[] array=scanner.nextLine().split(","); Map<String, Integer> map=new HashMap<>(); int count=0; for (int i = 0; i < array.length-1; i++) { if (!map.containsKey(array[i])) { map.put(array[i], 1); } for (int j = 1; j < array.length; j++) { if ((Integer.valueOf(array[i])+Integer.valueOf(array[j])==0)||(Integer.valueOf(array[i])+Integer.valueOf(array[j])==-0)) { if (Integer.valueOf(array[i])==0&&Integer.valueOf(array[j])==0) { if (!map.containsKey("a")) { map.put("a", 1); count++; } } if (Integer.valueOf(array[i])==-0&&Integer.valueOf(array[j])==-0) { if (!map.containsKey("b")) { map.put("b", 1); count++; } } if (Integer.valueOf(array[i])==0&&Integer.valueOf(array[j])==-0) { if (!map.containsKey("c")) { map.put("c", 1); count++; } } if (Integer.valueOf(array[i])==-0&&Integer.valueOf(array[j])==0) { if (!map.containsKey("c")) { map.put("c", 1); count++; } } if (!map.containsKey(array[j])) { map.put(array[j], 1); count++; } } } } System.out.println(count); } }我实在搞不懂了,改了好几次都是33%,求助大佬找找问题。 真是60分钟几乎都在处理这个问题,第二题直接秒了。