题解 | #数组分组#

数组分组

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

全部评论

相关推荐

迷茫的大四🐶:那你问他上班之后老实了没
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务