0
点赞
收藏
分享

微信扫一扫

【LeeCode】M选N

尤克乔乔 2022-11-24 阅读 82


【题目描述】

M选N组合算法, 有m长度的数组,从中随机选出n个,一般m远大于n


【示例】

例如求5中选3的组合:

1,2,3     1,2,4      1,3,4    2,3,4     1,2,5     1,3,5    2,3,5


【代码1】

public class Solution {
public static void main(String[] args) {
// M选N的算法
int m = 5;
int n = 3;
int[] a = new int[m];
int[] b = new int[n];
for(int i = 0; i < m; i++){
a[i] = i + 1; // a数组存储m对应的数字
}
mGetN(m, n, a, b);
}

private static void mGetN(int m, int n, int[] a, int[] b) {

for(int i = n; i <= m; i++) {
b[n - 1] = i - 1;
if (n > 1) {
mGetN(i - 1, n - 1, a, b); // 这里是 i-1和n-1, 因为i是变量
} else {
for(int j = 0; j < b.length; j++){
System.out.printf("%d ", a[b[j]]);
}
System.out.println();
}
}
}
}


【代码2】

学习参考:​​https://blog.51cto.com/u_13184837/2409923​​


举报

相关推荐

0 条评论