算法-Java组合
code:
import org.assertj.core.util.Lists;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* https://blog.csdn.net/yhyr_ycy/article/details/52523243
*
* @param <E>
*/
public class Combine<E> {
private List<List<E>> resList = Lists.newArrayList();
public List<List<E>> combine(List<E> srcList, int require) {
resList.clear();
if (require < 0) {
throw new IllegalArgumentException("");
}
if (srcList == null || srcList.size() == 0) {
return Lists.newArrayList();
}
if (require == 1) {
srcList.forEach(src -> resList.add(Collections.singletonList(src)));
return resList;
}
if (require == srcList.size()) {
return resList = Collections.singletonList(srcList);
}
combinerSelect(srcList, new ArrayList<>(), srcList.size(), require);
return resList;
}
private void combinerSelect(List<E> srcList, List<E> workSpace, int n, int require) {
List<E> copyData;
List<E> copyWorkSpace;
if (workSpace.size() == require) {
List<E> newL = Lists.newArrayList();
newL.addAll(workSpace);
resList.add(newL);
}
for (int i = 0; i < srcList.size(); i++) {
copyData = new ArrayList<>(srcList);
copyWorkSpace = new ArrayList<>(workSpace);
copyWorkSpace.add(copyData.get(i));
for (int j = i; j >= 0; j--) {
copyData.remove(j);
}
combinerSelect(copyData, copyWorkSpace, n, require);
}
}
}
test:
import com.y.Combine;
import org.assertj.core.util.Lists;
import org.junit.Test;
import java.util.List;
public class CombineTest {
@Test
public void test_combine() {
Combine<String> combine = new Combine<>();
List<String> testList = Lists.newArrayList("a", "b", "c", "d", "e");
List<List<String>> res = combine.combine(null, 3);
System.out.println(res);
res = combine.combine(Lists.newArrayList(), 3);
System.out.println(res);
res = combine.combine(testList, 1);
System.out.println(res);
res = combine.combine(testList, 3);
System.out.println(res);
res = combine.combine(testList, 5);
System.out.println(res);
// res = combine.combine(testList, -1);
// System.out.println(res);
}
}
算法-Java组合的更多相关文章
- 归并排序算法 java 实现
归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...
- 快速排序算法 java 实现
快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...
- 堆排序算法 java 实现
堆排序算法 java 实现 白话经典算法系列之七 堆与堆排序 Java排序算法(三):堆排序 算法概念 堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特 ...
- Atitit 电子商务订单号码算法(java c# php js 微信
Atitit 电子商务订单号码算法(java c# php js 微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...
- 无向图的最短路径算法JAVA实现
一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...
- 无向图的最短路径算法JAVA实现(转)
一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...
- 基于FP-Tree的关联规则FP-Growth推荐算法Java实现
基于FP-Tree的关联规则FP-Growth推荐算法Java实现 package edu.test.ch8; import java.util.ArrayList; import java.util ...
- 双色球机选算法java实现
双色球机选算法java实现 一.代码 package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. ...
- Floyd算法java实现demo
Floyd算法java实现,如下: https://www.cnblogs.com/Halburt/p/10756572.html package a; /** * ┏┓ ┏┓+ + * ┏┛┻━━━ ...
随机推荐
- LeetCode: Reverse Nodes in k-Group 解题报告
Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and ret ...
- JSP怎么将表单提交到对应的servlet
昨天学习了这些内容,今天做一下分享吧,个人感觉挺乱的....呵呵,其实没事,慢慢就好了.难的不会,会的不难嘛!努力+认真就可以了,相信大家都可以的!加油!!! 下面的图是我用myeclipse建立的项 ...
- ssh 地址
structs2http://struts.apache.org/download.cgi spring hibernate http://hibernate.org/orm/downloads/
- phpmyadmin 各种技巧拿 webshell
site.com/phpMyAdminsite.com/sql D:\wamp\www 账号还有密码 root 密码第一种CREATE TABLE `mysql`.`darkmoon` (`darkm ...
- Android 面试知识集2
继续上一篇文章整理有关Android的基础知识,为面试做准备的可以看看哪些知识是遗漏了.资料都是网上整理来,纠正了一些错误,有部分解析加入个人理解!感谢分享相关知识的开发者.这些知识平常开发的过程中都 ...
- RedHat 6 yum 使用网易源
. . . . . 刚装好了 RedHat 6 系统,但是使用 yum 的时候总是提示 nothing to do,并且什么都做不了.后来经过一番搜索才知道,红帽的 yum 在线更新是收费的,而且必须 ...
- 有用sql语句一
DECLARE @retval int, @param1 int EXECUTE @retval=master.dbo.xp_fileexist 'D:\TkSoft\SamplePic\Fabric ...
- spark streaming从指定offset处消费Kafka数据
spark streaming从指定offset处消费Kafka数据 -- : 770人阅读 评论() 收藏 举报 分类: spark() 原文地址:http://blog.csdn.net/high ...
- InstallShield卸载状态
uninstallaing() 它对应于-unistall 命令,在installshield 2009及之前的版本,在控制面板中选择"uninstall”会触发这个命令.但在install ...
- LeetCode之Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...