题解 | #牛棚分组#

牛棚分组

https://www.nowcoder.com/practice/d5740e4dde3740828491236c53737af4?tpId=354&tqId=10594669&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D354

import java.util.*;


public class Solution {

    ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @param k int整型
     * @return int整型二维数组
     */
    public int[][] combine (int n, int k) {
        // write code here
        search(1,k,n,new ArrayList<>());
    int[][] arr = new int[lists.size()][k];
    for(int i=0;i<lists.size();i++){
        for(int j=0;j<lists.get(i).size();j++){
            arr[i][j] = lists.get(i).get(j);
        }
    }
    return arr;
}
 
private void search(int cur,int cap,int n,ArrayList<Integer> list){
    if(list.size()==cap){
        lists.add(new ArrayList<>(list));
        return;
    }
    if(cur>n){
        return;
    }
    list.add(cur);
    search(cur+1,cap,n,list);
    list.remove(list.size()-1);
    search(cur+1,cap,n,list);
}

    }

知识点分析:

  1. 回溯算法:通过递归生成所有可能的组合。
  2. 递归:在每一步中,向组合中添加一个元素,然后递归继续处理剩余元素。
  3. 限制条件:每个组合的大小需要等于 k。

解题思路:

代码中,我们使用回溯算法递归地生成所有可能的组合。对于每个元素,我们可以选择将其添加到当前组合中,然后继续递归地处理剩余元素。一旦组合的大小达到 k,我们将其加入结果列表中。

全部评论

相关推荐

11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务