博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode 77.Combinations (组合)
阅读量:5303 次
发布时间:2019-06-14

本文共 1243 字,大约阅读时间需要 4 分钟。

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

For example,

If n = 4 and k = 2, a solution is:

[  [2,4],  [3,4],  [2,3],  [1,2],  [1,3],  [1,4],]
思路:此题意思是给一个n,和k,求1-n的k个数的组合。没有反复(位置交换算反复)。可用排列组合的统一公式求解。

代码例如以下:

public class Solution {    boolean[] f;    List
> list; public List
> combine(int n, int k) { list = new ArrayList
>(); if(k > n || k < 1){//必须是有效k值 return list; } f = new boolean[n]; int[] a = new int[n]; for(int i=0; i < n; i++){ a[i] = i+1;//将数填充 } mm = n-1; count(a,"",k,n,0);//调用函数 return list; } /** * 实现对k个数字的排练组合 * @param a 数组 * @param s 排练组合得到的结果 * @param nn 排练组合的数字个数 */ int kk = 0; int mm; private void count(int[] a,String s,int nn,int n,int j){ if(nn == 0){//处理结果 String[] sa = s.split(",");//切割数组 List
al = new ArrayList
(); for(int i = 0;i < sa.length; i++){ if(sa[i].length() > 0)//仅仅有当不为空的时候才加入 al.add(Integer.parseInt(sa[i]));//加入 } list.add(al); return; } //遍历,从i=j開始,仅仅要i开头的与i大的值 for(int i = j; i < a.length; i++){ if(!f[i]){ f[i] = true; count(a,s + "," + a[i],nn-1,n,i+1);//调用下一个为false的数字 f[i] = false; } } }}

转载于:https://www.cnblogs.com/wzzkaifa/p/7295552.html

你可能感兴趣的文章
7.5 文件操作
查看>>
DFS-hdu-2821-Pusher
查看>>
Spring事务管理的三种方式
查看>>
MyEclipse中将普通Java项目convert(转化)为Maven项目
查看>>
node js 安装.node-gyp/8.9.4 权限 无法访问
查看>>
Linux内核分析——第二周学习笔记
查看>>
windows基本命令
查看>>
Qt图片显示效率的比较(转)
查看>>
VMware中CentOS设置静态IP
查看>>
剑指Offer_编程题_7
查看>>
js 变量大小写
查看>>
Linux系统的启动原理
查看>>
JDesktopPane JInternalFrames
查看>>
错误The request sent by the client was syntactically incorrect ()的解决
查看>>
Java基础知识学习(九)
查看>>
redis在windows下总是报错,就是下面的错误,这是哪里出错了
查看>>
Asp.net窄屏页面 手机端新闻列表
查看>>
Linux 密钥验证
查看>>
windows下UDP服务器和客户端的实现
查看>>
MySQL各版本的区别
查看>>