1~n的全排列--阅文集团2018校招笔试题
题目大意:给定整数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校招笔试题的更多相关文章
- 阅文集团 招聘官网 bug
阅文集团 招聘官网 bug https://join.yuewen.com/ 前端开发 zxx.jpg 张鑫旭 https://qidian.gtimg.com/yuewen/join/css/ima ...
- 最长回文子串(百度笔试题和hdu 3068)
版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123559 求一个字符串的最长回文子串.注 ...
- 2018 CVTE 前端校招笔试题整理
昨天晚上(7.20)做了CVTE的前端笔试,总共三十道题,28道多选题,2道编程题 .做完了之后觉得自己基础还是不够扎实,故在此整理出答案,让自己能从中得到收获,同时给日后的同学一些参考. 首先说一下 ...
- 2018 C笔试题
⼀.单项选择题(15⼩题,每⼩题2分,共30分) 解析:[传值调用],实参和形参之间传递的是“地址” 解析:[优先级]:算术运算符 > 关系运算符 > 赋值运算符 [结核性 ...
- 面试官:说说Redis的Hash底层 我:......(来自阅文的面试题)
redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS Redis的双向链表一文全知道 前言 hello ...
- 华为2018软件岗笔试题之第一题python求解分享
闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...
- 2018春招-今日头条笔试题-第四题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...
- 2018春招-今日头条笔试题-第三题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...
- 2018春招-今日头条笔试题-第二题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 利用深度优先搜索 #-*- coding:utf-8 -*- class DFS: ''' num:用于存储最后执行次 ...
随机推荐
- BZOJ - 1036 树的统计Count (LCT)
LCT试炼题(代码量居然完爆树剖?) #include<bits/stdc++.h> using namespace std; ,inf=0x3f3f3f3f; ],flp[N],n,m, ...
- WinEdit编辑器中中文乱码
这个问题困扰了我很久.我的电脑上装的CTEX的最新版本,原来我的系统是windows 7 64位系统.装好了CTEX之后,在里面可以直接输入中文,显示和编译生成的PDF文件都正常.但是后来系统崩溃了一 ...
- javascript之定时器的使用
一:什么是定时器 (一)无限循环定时器 <script> window.onload = function(){ function test(){ alert("test&quo ...
- docker容器共享宿主机环境,从而为镜像体积减负
一.背景介绍 响应公司技术发展路线,开发的服务均需要将打成docker镜像,使用docker进行统一管理.可是随着服务越来越多,镜像也越来越多.每次制作镜像的时候都需要将依赖打进容器,这样一个jre的 ...
- 3828. 三角形计数 3829. ZCC loves Isaac 3830. 字符消除
3828 给定n个点的坐标(0<=xi,yi<=10000)求选出任意三个点能组成的三角形的总面积. 题解 太naive了 枚举三角形的y最小的点,把剩余的点按角度排序 然后随便算,可以用 ...
- org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:
- C# for循环测试
- 洛谷 P1282 多米诺骨牌 ( 线性DP )
题意 : 题目链接 分析 : 一开始这个想法也有想到,但是貌似要开很大数组,就感觉应该不行 遂放弃想其他方法,万万没想到注意到可以滚动优化(其实不优化也可以过) 定义 dp[i][j] 表示 到第 ...
- Ansible跳板机自动部署
首先,安装ansible,略过此步骤. 一.控制机(jenkens.ansible所在机器与跳板机之间互信,跳板机与目的机之间互信) 1.在客户端生成公钥私钥对 命令:ssh-keygen -t rs ...
- (63)通信协议之一json
1.什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使 ...