一著名软件公司的java笔试算法题!
算法程序题:
该公司笔试题就1个,要求在10分钟内作完。
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
循环方法
class Test2 {
public static void main(String args[]) {
char[] c = { '1', '2', '2', '3', '4', '5' };
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c.length; j++) {
if (i == j || (c[i] == '3' && c[j] == '5'))
continue;
for (int k = 0; k < c.length; k++) {
if (k == i || k == j || (c[j] == '3' && c[k] == '5')
|| c[k] == '4') {
continue;
}
for (int m = 0; m < c.length; m++) {
if (m == k || m == i || m == j
|| (c[k] == '3' && c[m] == 5)) {
continue;
}
for (int n = 0; n < c.length; n++) {
if (n == m || n == k || n == i || n == j
|| (c[m] == '3' && c[n] == '5')) {
continue;
}
for (int l = 0; l < c.length; l++) {
if (l == n || l == m || l == k || l == j
|| l == i
|| (c[n] == '3' && c[l] == '5')) {
continue;
}
System.out.println(c[i] + "" + c[j] + "" + c[k]
+ "" + c[m] + "" + c[n] + "" + c[l]);
}
}
}
}
}
}
}
}
递归方法
class Test2 {
public int[] getNextDifPos(int[] before, int add) {
int[] res = new int[before.length + 1];
for (int i = 0; i < before.length; i++) {
res[i] = before[i];
}
res[res.length - 1] = add;
return res;
}
public int getNextPos(int[] pos) {
for (int i = 0; i < pos.length; i++) {
if (pos[i] != -1) {
return i;
}
}
return -1;
}
public void getStr(int[] before, char[] chars) {
if (before.length == chars.length) {
StringBuffer str = new StringBuffer();
for (int i = 0; i < before.length; i++) {
str.append(chars[before[i]]);
}
// 加判断条件
if (str.charAt(2) == '4' || str.indexOf("35") >= 0) {
return;
}
System.out.println(str.toString());
} else if (before.length < chars.length) {
int[] pos = new int[chars.length];
for (int i = 0; i < before.length; i++) {
pos[before[i]] = -1;
}
int nextPos;
while ((nextPos = getNextPos(pos)) != -1) {
pos[nextPos] = -1;
getStr(getNextDifPos(before, nextPos), chars);
}
}
}
public static void main(String args[]) {
char[] c = { '1', '2', '2', '3', '4', '5' };
int[] l = {};
Test2 t = new Test2();
t.getStr(l, c);
}
}
分享到:
相关推荐
全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、...这是里面包含的算法,本人在准备笔试的时候找的,算法尽量采用最优的。 所有的代码均经过测试,个人觉得没有问题,如果哪位大牛找到错误,欢迎批评指正
华为OD、大厂笔试算法题; 一共87题,每一题附答案(java语言),笔试时频繁出现的原题,想进大厂的小伙伴,欢迎下载; eg: 1、5键键盘的输出 有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键...
C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....
笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题...
Vue.js 是一款流行的前端JavaScript框架,它以组件化开发、易用性和高性能著称。"双向数据绑定"是Vue的核心特性之一,对于理解和掌握Vue.js至关重要。在面试中,了解和能够解释Vue的双向绑定原理是展示技术能力的...
根据提供的文件信息,我们可以归纳总结出以下几个主要的IT知识点: ### 1. 兔子繁殖问题(斐波那契数列) ...这些知识点涵盖了常见的数据结构、算法应用以及Java编程技巧,对于初学者来说是非常好的学习资源。
软件工程师经典笔试算法题 软件工程师经典笔试算法题是软件工程师面试中经常出现的算法笔试题,这篇文章将从六个方面对软件工程师经典笔试算法题进行详细的讲解。 一、将一整数逆序后放入一数组中 这个算法题考察...
例如,"20081030131616.chm"可能包含历年面试题的解析和示例代码,而"笔试算法题.doc"可能提供了具体的题目供练习。通过深入学习和实践,可以提高自己在面试中的竞争力。 此外,熟悉C语言也是有益的,因为许多算法...
2019年的这份笔试题涵盖了多个相关的知识点,下面我会详细解释。 首先,电磁场与电磁波的知识在这个笔试题中占比不多,但这是雷达技术的基础。电磁波的传播特性、极化效应以及电磁波与物体的相互作用等基础概念,对...
### 常见IT公司笔试算法题知识点 #### 1. 整数反转 ```c void convert(int *result, int n) { if (n >= 10) convert(result + 1, n / 10); *result = n % 10; } ``` - **知识点:** - **递归**:通过递归调用...
华为校园招聘笔试算法题汇总 华为校园招聘笔试算法题汇总中包含了多道算法题目,涵盖了字符串处理、压缩、过滤等多方面的知识点。本文将对其中的几道题目进行详细解释和分析。 一、字符串过滤 问题描述:编写一个...
这些IT公司的笔试算法题目涵盖了多个基础的编程概念和算法,主要涉及递归、数组操作、字符串处理、数学问题以及图的遍历等。下面逐一解析这些题目及其解题思路: 1. **整数逆序入数组**:这个题目是通过递归实现...
在准备BAT(百度、阿里巴巴、腾讯)这样的中国顶级互联网公司的...总之,这个“BAT iOS算法笔试题集合”是一个宝贵的资源,它涵盖了面试中可能遇到的各种问题,通过深入学习和实践,你将更有信心面对大厂的面试挑战。
不骗人,整理的一套试卷的全部题目~2017年哒
12-02-28网易笔试一道算法题,附件代码是我自己的解题
新鲜出炉的阿里巴巴笔试题,今年人工智能两个答题全部都是NLP
【去哪儿网2014笔试算法题汇总】 在软件开发中,尤其是在文件系统操作和路径处理方面,将相对路径转换为绝对路径是一项基础且重要的任务。这个问题是去哪儿网2014年笔试中的一道算法题,其目标是编写一个函数`RP2AP...
【大华股份2014年嵌入式软件、算法类笔试题】是针对该公司当年招聘过程中的一个重要环节,这是一场集技术性与专业性于一体的考试,旨在考察应聘者在嵌入式系统开发和算法设计方面的综合能力。2014年的笔试题目相比...
在算法笔试中,经常会遇到关于数字处理的问题。这类问题通常考察的是候选人的逻辑思维能力和基本编程能力。其中一道典型的题目是计算0到n之间所有数字中数字“1”出现的总次数。 #### 解析 给定一个非负整数`n`,...
以下是大疆2019年8月雷达算法工程师笔试题的知识点详细解读。 首先,“DJI大疆2019年8月雷达算法工程师笔试题B卷”这一标题说明这是一次面向特定职位(雷达算法工程师)的招聘考试。大疆(DJI)是一家专门从事民用...