题解 | #数组分组#
数组分组
https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String nextLine = in.nextLine();
if (Objects.isNull(nextLine) || nextLine.equals("")) {
break;
}
String line = in.nextLine();
String[] s = line.split(" ");
List<Integer> integers = Arrays.stream(s)
.map(Integer::parseInt)
.collect(Collectors.toList());
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list1.addAll(integers.stream()
.filter(item -> item % 5 == 0 && item % 3 != 0)
.collect(Collectors.toList()));
list2.addAll(integers.stream()
.filter(item -> item % 5 != 0 && item % 3 == 0)
.collect(Collectors.toList()));
List<Integer> collect = integers.stream()
.filter(item -> (item % 5 == 0 && item % 3 == 0) || (item % 5 != 0 && item % 3 != 0))
.collect(Collectors.toList());
Integer result1 = list1.stream()
.reduce((cur, res) -> res = res + cur)
.orElse(0);
Integer result2 = list2.stream()
.reduce((cur, res) -> res = res + cur)
.orElse(0);
System.out.println(dfs(result1, result2, collect));
}
}
public static boolean dfs(Integer result1, Integer result2, List<Integer> collect) {
if (collect.isEmpty()) {
return result1.equals(result2);
}
ArrayList<Integer> integers1 = new ArrayList<>(collect);
ArrayList<Integer> integers2 = new ArrayList<>(collect);
return dfs(result1 + integers1.remove(0), result2, integers1) || dfs(result1, result2 + integers2.remove(0),
integers2);
}
}


查看17道真题和解析