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:用于存储最后执行次 ...
随机推荐
- Linux中关闭SSH的DNS解析
在操作中,我们都会用SSH协议来远程控制虚拟机,但是在输入用户名时候,会有一段时间的卡顿,此时正在进行SSH协议的DNS解析,我们为了快速的连接到虚拟机上,就要关闭这个解析过程,如下是具体配置: 1. ...
- 百度地图api的简单应用(一):POI检索
使用之前,需要注册一个百度地图开发者账号,最好申请一个认证以获取更高的使用配额和并发上限. 注册之后,申请一个应用,获得一个ak(密钥),并填写ip地址白名单.(这里我使用0.0.0.0/0,查了自己 ...
- sqlserver表值函数调用方式
Connection conn = sqlServerManage.sqlServerConn(); Statement stmt; ResultSet rs; // 组装sql StringBuff ...
- Arduino连接MPU6050陀螺仪
一.线路连接 Arduino MPU6050 VCC 3.3V/5V GND GND SCL A5 SDA A4 INT D2 二.库下载 https://pan.baidu.com/s/1nvt75 ...
- NOIP2016提高A组模拟9.17总结
第一题,典型的隔板问题, 但是我忘记隔板问题怎么打,一开始在花了1小时,还是没想出来,果断弃疗, 最后的40分钟,我打完了第二题,接着又用了20分钟推敲出一种极其猥琐的式子来代替,可惜预处理的阶乘忘记 ...
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)树上路径
题目 给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E.(k为路径p上的边的权值和). 分析 点分治,设当前为x的,求在以x为根的子树中,经过x的路径(包括起点或 ...
- 【leetcode】Reorganize String
题目如下: Given a string S, check if the letters can be rearranged so that two characters that are adjac ...
- Java面试框架篇(8)
71,谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServle ...
- HTML5测试(一)
HTML5测试一 1. 问题:HTML5 之前的 HTML 版本是什么? A.HTML 4.01 B.HTML 4 C.HTML 4.1 D.HTML 4.9 答案:A HTML5 是 HTML 最新 ...
- 游标定位:Cursor类
关于 Cursor Cursor 是每行的集合. 使用 moveToFirst() 定位第一行. 你必须知道每一列的名称. 你必须知道每一列的数据类型. Cursor 是一个随机的数据源. 所有的数据 ...