题解 | #牛群分组II#

牛群分组II

https://www.nowcoder.com/practice/9ebc32fee9b54bfa9f9c3deca80febb0

题目考察的知识点是:

递归回溯。

题目解答方法的文字分析:

每个数字只能选一次,要获取全部的方案,可以采用回溯的方法。从左到右选择是否把当前元素加入路径,当到达末尾或者累积总和大于等于要求时停止。当总和等于要求值时加入答案。由于我们优先选取当前元素的路径,所以得到字典序递增的答案

本题解析所用的编程语言:

java语言。

完整且正确的编程代码:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param candidates int整型一维数组
     * @param target int整型
     * @return int整型二维数组
     */
    public static LinkedList<LinkedList<Integer>> lists = new LinkedList<>();
    public int[][] cowCombinationSum2 (int[] candidates, int target) {
        // write code here
        Boolean[] flags = new Boolean[candidates.length];
        Arrays.fill(flags, false);
        search(candidates, target, 0, flags, new LinkedList<>());
        int[][] arr = new int[lists.size()][];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new int[lists.get(i).size()];
            for (int j = 0; j < lists.get(i).size(); j++) {
                arr[i][j] = lists.get(i).get(j);
            }
        }
        return arr;
    }

    public void search(int[] nums, int target, int cur, Boolean[] flags,
                       LinkedList<Integer> arrayList) {
        if (cur == target) {
            lists.add(new LinkedList<>(arrayList));
            return;
        }
        for (int i = 0; i < flags.length; i++) {
            if (!flags[i]) {
                if (arrayList.size() != 0 && nums[i] < arrayList.get(arrayList.size() - 1)) {
                    continue;
                }
                arrayList.add(nums[i]);
                flags[i] = true;
                search(nums, target, cur + nums[i], flags, arrayList);
                arrayList.remove(arrayList.size() - 1);
                flags[i] = false;
            }
        }
    }
}
#题解#
全部评论

相关推荐

生命诚可贵:先不说内容怎么样 排版就已经太差劲了 第一眼看不到重点,第二眼已经没有再看的耐心了, 篇幅占的太满了 字体不要用灰色 观感不好 想重点突出的黑色加粗就可以了 多列要点 少些大段的句子 项目经历把项目用的技术要点列出来,光写个python plc什么的太宽泛了 自我评价也有点偏多
点赞 评论 收藏
分享
02-22 21:16
已编辑
门头沟学院 运营
牛客928043833号:离了你谁还拿我当个宝
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务