public static int[] getRains(int[] rains){ if (rains==null||rains.length==0) { return new int[0]; } int len=rains.length; int[] res=new int[len]; Arrays.fill(res,-1); Set<Integer> day=new HashSet<>(); for (int i = 0; i < len; i++) { if (rains[i] != 0) { if (day.contains(rains[i])) { return new int[0]; } else { day.add(rains[i]); } } else { for (int j = i+1; j < len; j++) { if (day.contains(rains[j])) { res[i] = rains[j]; day.remove(rains[j]); break; } } } } return res; }