java-求指定数组中指定个数的排列组合
真的是讨厌面试的那些数字排列组合题,时间久了总是容易忘记算法,
这里写个自己及朋友遇到的可能使用到的情况汇总
耐心的同学看注释应该能理解,可能写的繁琐(为了一个方法整全),但是应该够用
/*** @author huangw*/
public class Combination {/*** 递归实现排列组合* @param candidate 数组--数字集合* @param prefix 递归打印使用* @param size 当前数组选取位数,例如4个数字里面求3位组合传3即可 传0为当前数组的所有组合输出* @param resList 返回内容的数字字符串组合*/public static void recursive(List<Integer> candidate, String prefix, Integer size, List<String> resList){if(size == 0) {if(prefix.length() != 0) {System.out.println(prefix);resList.add(prefix);}} else if(prefix.length() == size){System.out.println(prefix);resList.add(prefix);return;}for(int i=0; i<candidate.size(); i++){List<Integer> temp = new LinkedList<Integer>(candidate);int item = (int)temp.remove(i); // 取出被删除的元素,这个元素当作一个组合用掉了//去重保留一种 例如12和21为同一种 123 132 321位同一种for(int k = i; k > 0; k--) {//注释即为全排列temp.remove(k-1);}recursive(temp, prefix+item, size, resList);}}public static void main(String[] args) {Integer[] array = {1,2,4};List<Integer> list = Arrays.asList(array);Set<Integer> set = new HashSet(list);//数字数组本身去重---利用set集合List<Integer> newList = new ArrayList(set);System.out.println(newList);List<String> resList = new ArrayList<String>();recursive(list, "", 3,resList);System.out.println(resList);}
}
欢迎留言指导
java-求指定数组中指定个数的排列组合相关推荐
- 【Java】 查找数组中指定元素之 顺序查找 与 二分查找
今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...
- Java 求一组数组中的平均数
求一组数组中的平均数 题目 输入10个整数,输出这10个整数的的平均数,要求输出的平均数保留2位小数 输入样例 1 2 3 4 5 6 7 8 9 10 输出样例 5.50 import java.u ...
- java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...
分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...
- 求数组中k个数的所有组合
/*** 求数组中 k个元素序列 的所有组合* @param start* @param array* @param length* @param k* @param list* @param use ...
- Java二分法查找数组中某个数的下标
package dataStructures;import java.util.Scanner; /* 用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值, 若找到key ...
- java返回特定下标元素_java基础--输出数组中指定元素的下标
java基础--输出数组中指定元素的下标 java基础--输出数组中指定元素的下标 package com.lcn.day05; public class ArrayDemo8 { /** * 输出数 ...
- java数组元素的输入_java基础--键盘输入一个数,输出数组中指定元素
java基础--键盘输入一个数,输出数组中指定元素 java基础--键盘输入一个数,输出数组中指定元素 package com.lcn.day05; import java.util.Scanner; ...
- arraycopy方法(将数组中指定的数据拷贝到另一个数组)
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据 ...
- jQuery删除数组中指定的元素
jQuery删除数组中指定的元素 方法:arr.splice($.inArray(元素, 数组), 删除的个数); var arr = ['a','b','c','d']; arr.splice($. ...
最新文章
- js 中转换成list集合_java stream中Collectors的用法
- 如何扩展CentOS7的SWAP分区
- C++中引用和指针的不同
- 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
- 移除集合效率高还是add高_效率比较--集合
- PHP扩展开发--实验成功
- Joe博客模板Typecho主题
- Nodejs nmp 常用命令
- C#调用API函数EnumWindows枚举窗口的方法
- python连接池框架_python3.0 django mysql连接池说明
- android 4g wifi内外网,android 中判断网络状态5G 4G 3G 还是wifi
- vb 获取设备音量_自制 Windows 10X 启动盘,提前体验微软折叠设备新系统
- 125KHz 100cm ID 读卡电路_NX系列PLC-NX-ID数字输入单元_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关...
- 华为小程序怎么弄出来_华为手机添加桌面小程序 华为手机小程序怎么弄出来...
- 次世代游戏建模制作工作流程
- 使用java代码打印三角形、平行四边形、菱形
- 观影笔记 |独行月球
- tableau最大值最小值显示
- Tensorflow入门之 Win10 运行 linux 子系统
- Mybati从持久层到大气层
热门文章
- 论文阅读《Knowledge Collaborative Fine-tuning for Low-resource Knowledge GraphCompletion》
- C++ 虚函数详解(虚函数表、vfptr)——带虚函数表的内存分布图
- 紫禁繁花服务器维护,紫禁繁花跨服活动内容一览_紫禁繁花跨服活动详情_玩游戏网...
- 启用 DHCP 和静态 IP 共存
- Kakfa LAG监控
- 优酷鸿蒙开发实践|多屏互动开发实践
- Web-10(37-40)-BUUCTF平台
- 怎么把pdf转换成excel文件?
- i 技术会笔记 | Druid在爱奇艺的实践和技术演进
- Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改