题目大意:给定整数n,求出1~n的全排列

示例

输入:n=3

输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]

 import java.util.Scanner;
import java.util.ArrayList; public class Main{
private void func(ArrayList<Integer> nArray, ArrayList<ArrayList<Integer>> results, ArrayList<Integer> oneResult) {
int nArraySize = nArray.size();
if(nArraySize == 0) {
results.add(new ArrayList<Integer>(oneResult)); // 要新建一个类加入到结果集中,不然最终结果集中所有结果都一样(因为是同一个ArrayList)
return;
}
int tmp = 0;
for(int i=0; i<nArraySize; i++) {
tmp = nArray.get(i);
nArray.remove(i);
oneResult.add(tmp);
func(nArray, results, oneResult);
nArray.add(i, tmp);
oneResult.remove(oneResult.size()-1);
} } public static void main(String[] args) {
Main mainClass = new Main();
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
String input = in.next();
int n = Integer.parseInt(input.split("=")[1]);
ArrayList<Integer> nArray = new ArrayList<Integer>();
for(int i=1; i<=n; i++) {
nArray.add(i);
} ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
mainClass.func(nArray, results, new ArrayList<Integer>()); /**
* 构造输出格式
*/
StringBuilder stringBuilder = new StringBuilder();
for(int i=0; i<results.size(); i++) {
if(i > 0) {
stringBuilder.append(",");
}
stringBuilder.append("[");
for(int j=0; j<results.get(i).size(); j++) {
if(j > 0) {
stringBuilder.append(",");
}
stringBuilder.append(results.get(i).get(j));
}
stringBuilder.append("]");
} System.out.println(stringBuilder.toString());
}
in.close();
}
}

1~n的全排列--阅文集团2018校招笔试题的更多相关文章

  1. 阅文集团 招聘官网 bug

    阅文集团 招聘官网 bug https://join.yuewen.com/ 前端开发 zxx.jpg 张鑫旭 https://qidian.gtimg.com/yuewen/join/css/ima ...

  2. 最长回文子串(百度笔试题和hdu 3068)

    版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123559 求一个字符串的最长回文子串.注 ...

  3. 2018 CVTE 前端校招笔试题整理

    昨天晚上(7.20)做了CVTE的前端笔试,总共三十道题,28道多选题,2道编程题 .做完了之后觉得自己基础还是不够扎实,故在此整理出答案,让自己能从中得到收获,同时给日后的同学一些参考. 首先说一下 ...

  4. 2018 C笔试题

    ⼀.单项选择题(15⼩题,每⼩题2分,共30分)  解析:[传值调用],实参和形参之间传递的是“地址”  解析:[优先级]:算术运算符 > 关系运算符  >   赋值运算符    [结核性 ...

  5. 面试官:说说Redis的Hash底层 我:......(来自阅文的面试题)

    redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS Redis的双向链表一文全知道 前言 hello ...

  6. 华为2018软件岗笔试题之第一题python求解分享

    闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...

  7. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

  8. 2018春招-今日头条笔试题-第三题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...

  9. 2018春招-今日头条笔试题-第二题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 利用深度优先搜索 #-*- coding:utf-8 -*- class DFS: ''' num:用于存储最后执行次 ...

随机推荐

  1. MyEclipse使用教程:使用主题自定义工作台外观

    [MyEclipse CI 2019.4.0安装包下载] 您可以通过选择Window>Preferences>General>Appearance来使用主题自定义的工作台外观,可以从 ...

  2. python之路day14--嵌套函数、匿名函数、高阶函数。函数的递归

      嵌套函数 函数里不仅可以写代码,还可以嵌套函数 name = "小猿圈" def change(): name = "小猿圈,自学编程" def chang ...

  3. 【NOIP2016普及组复赛】魔法阵

    题目 分析 设xd-xc为i,那么xb-xa=2i, 又因为xb-xa<(xc-xb)/3, 那么c>6i+b. 于是,先枚举i, 再分别枚举xa和xd, 根据之间的关系,用前缀和求出每一 ...

  4. 伸展树splay之求区间极值

    前言 这篇博客是根据我在打这道题的时候遇到的问题,来打的,有些细节可能考虑不到. 题目 在N(1<=N<=100000)个数A1-An组成的序列上进行M(1<=M<=10000 ...

  5. 文件的读写过程open read write close

    在python中,读写文件有3个步骤: 调用open()函数,返回一个File对象. 调用File对象的read()或write()方法. 调用File对象的close()方法,关闭该文件. 在读取或 ...

  6. 洛谷 P5022 旅行——题解

    发现大部分题解都是O(n^2)的复杂度,这里分享一个O(n)复杂度的方法. 题目传送 首先前60%的情况,图是一棵无根树,只要从1开始DFS,每次贪心走点的编号最小的点就行了.(为什么?因为当走到一个 ...

  7. 算法设计与分析 1.2 不一样的fibonacci数列 (矩阵快速幂思想)

    题目描述 Winder 最近在学习 fibonacci 数列的相关知识.我们都知道 fibonacci 数列的递推公式是F(n) = F(n - 1) + F(n - 2)(n >= 2 且 n ...

  8. Spring Cloud Stream教程(四)消费群体

    虽然发布订阅模型可以轻松地通过共享主题连接应用程序,但通过创建给定应用程序的多个实例来扩展的能力同样重要.当这样做时,应用程序的不同实例被放置在竞争的消费者关系中,其中只有一个实例预期处理给定消息. ...

  9. js for循环中i++与++i有什么区别

    平时都是这样写的for循环, 1 2 3 for(var i = 0; i < 20 ; i++){        ....       } 但我看有的人这样写 for (var i = 0; ...

  10. 【ELK学习】初识ElasticSearch

    ES(elasticsearch) 是一个高可扩展的.开源的全文检索和分析引擎,它允许你存储.检索.分析海量数据,以一种快到近乎实时的速度. ES用例场景: 使用ES存储商品目录.清单,提供检索.输入 ...