真的是讨厌面试的那些数字排列组合题,时间久了总是容易忘记算法,

这里写个自己及朋友遇到的可能使用到的情况汇总

耐心的同学看注释应该能理解,可能写的繁琐(为了一个方法整全),但是应该够用

/*** @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-求指定数组中指定个数的排列组合相关推荐

  1. 【Java】 查找数组中指定元素之 顺序查找 与 二分查找

    今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...

  2. Java 求一组数组中的平均数

    求一组数组中的平均数 题目 输入10个整数,输出这10个整数的的平均数,要求输出的平均数保留2位小数 输入样例 1 2 3 4 5 6 7 8 9 10 输出样例 5.50 import java.u ...

  3. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...

    分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...

  4. 求数组中k个数的所有组合

    /*** 求数组中 k个元素序列 的所有组合* @param start* @param array* @param length* @param k* @param list* @param use ...

  5. Java二分法查找数组中某个数的下标

    package dataStructures;import java.util.Scanner; /* 用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值, 若找到key ...

  6. java返回特定下标元素_java基础--输出数组中指定元素的下标

    java基础--输出数组中指定元素的下标 java基础--输出数组中指定元素的下标 package com.lcn.day05; public class ArrayDemo8 { /** * 输出数 ...

  7. java数组元素的输入_java基础--键盘输入一个数,输出数组中指定元素

    java基础--键盘输入一个数,输出数组中指定元素 java基础--键盘输入一个数,输出数组中指定元素 package com.lcn.day05; import java.util.Scanner; ...

  8. arraycopy方法(将数组中指定的数据拷贝到另一个数组)

    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据 ...

  9. jQuery删除数组中指定的元素

    jQuery删除数组中指定的元素 方法:arr.splice($.inArray(元素, 数组), 删除的个数); var arr = ['a','b','c','d']; arr.splice($. ...

最新文章

  1. js 中转换成list集合_java stream中Collectors的用法
  2. 如何扩展CentOS7的SWAP分区
  3. C++中引用和指针的不同
  4. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
  5. 移除集合效率高还是add高_效率比较--集合
  6. PHP扩展开发--实验成功
  7. Joe博客模板Typecho主题
  8. Nodejs nmp 常用命令
  9. C#调用API函数EnumWindows枚举窗口的方法
  10. python连接池框架_python3.0 django mysql连接池说明
  11. android 4g wifi内外网,android 中判断网络状态5G 4G 3G 还是wifi
  12. vb 获取设备音量_自制 Windows 10X 启动盘,提前体验微软折叠设备新系统
  13. 125KHz 100cm ID 读卡电路_NX系列PLC-NX-ID数字输入单元_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关...
  14. 华为小程序怎么弄出来_华为手机添加桌面小程序 华为手机小程序怎么弄出来...
  15. 次世代游戏建模制作工作流程
  16. 使用java代码打印三角形、平行四边形、菱形
  17. 观影笔记 |独行月球
  18. tableau最大值最小值显示
  19. Tensorflow入门之 Win10 运行 linux 子系统
  20. Mybati从持久层到大气层

热门文章

  1. 论文阅读《Knowledge Collaborative Fine-tuning for Low-resource Knowledge GraphCompletion》
  2. C++ 虚函数详解(虚函数表、vfptr)——带虚函数表的内存分布图
  3. 紫禁繁花服务器维护,紫禁繁花跨服活动内容一览_紫禁繁花跨服活动详情_玩游戏网...
  4. 启用 DHCP 和静态 IP 共存
  5. Kakfa LAG监控
  6. 优酷鸿蒙开发实践|多屏互动开发实践
  7. Web-10(37-40)-BUUCTF平台
  8. 怎么把pdf转换成excel文件?
  9. i 技术会笔记 | Druid在爱奇艺的实践和技术演进
  10. Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改