==============================
==============================
算法程序题:
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
基本思路:
1 把问题归结为图结构的遍历问题。实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路径就是最后对这6个数字的排列组合结果集。
2 显然这个结果集还未达到题目的要求。从以下几个方面考虑:
1. 3,5不能相连:实际要求这个连通图的结点3,5之间不能连通, 可在构造图结构时就满足改条件,然后再遍历图。
2. 不能有重复: 考虑到有两个2,明显会存在重复结果,可以把结果集放在TreeSet中过滤重复结果
3. 4不能在第三位: 仍旧在结果集中去除满足此条件的结果。
采用二维数组定义图结构,最后的代码是:
import java.util.Iterator;
import java.util.TreeSet;
public class TestQuestion {
private String[] b = new String[]{"1", "2", "2", "3", "4", "5"};
private int n = b.length;
private boolean[] visited = new boolean[n];
visited =falsh;
private int[][] a = new int[n][n];
private String result = "";
private TreeSet TreeSet = new TreeSet();
public static void main(String[] args) {
new TestQuestion().start();
}
private void start() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
a[i][j] = 0;
} else {
a[i][j] = 1;
}
}
}a[3][5] = 0;
a[5][3] = 0;
for (int i = 0; i < n; i++) {
this.depthFirstSearch(i);
}
Iterator it = set.iterator();
while (it.hasNext()) {
String string = (String) it.next();
if (string.indexOf("4") != 2) {
System.out.println(string);
}
}
}
private void depthFirstSearch(int startIndex) {
visited[startIndex] = true;
result = result + b[startIndex];
if (result.length() == n) {
TreeSet .add(result);
}
for(int j = 0; j < n; j++) {
if (a[startIndex][j] == 1 && visited[j] == false) {
depthFirstSearch(j);
} else {
continue;
}
}
result = result.substring(0, result.length() -1);
visited[startIndex] = false;
}
}
========================================
========================================
第二个题目:
50个人围成一圈数到三和三的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
答案:
- package com.test.kaoshi;
-
- import java.util.Iterator;
- import java.util.LinkedList;
-
- public class YouXi {
- public static int removeNM(int n, int m) {
- LinkedList ll = new LinkedList();
- for (int i = 0; i < n; i++)
- ll.add(new Integer(i + 1));
- int removed = -1;
- while (ll.size() > 1) {
- removed = (removed + m) % ll.size();
- ll.remove(removed--);
- }
- return ((Integer) ll.get(0)).intValue();
- }
-
- public static void main(String[] args) {
- System.out.println(removeNM(50, 3));
- }
- }
分享到:
相关推荐
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
自己从网上整理的java面试题目,有重点标注,攻202题,word有索引大纲,包括javase,j2ee,框架,简单算法
利用空余时间整理了一份《Java架构进阶核心知识点笔记》,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。 之前有分享过这份知识点笔记的初稿,现在又对知识点笔记进行了一定的优化...
高级java笔试题 面试知识点简单汇总(自测) 招聘网站的一般要求汇总(面试造火箭系列): 具备开发高并发引擎能力 熟悉HTTP,TCP/IP等常用协议原理 熟悉Docker相关理念及核心技术 精通SQL和NoSQL数据库体系架构设计...
互联网公司JAVA笔试题总结+leetcode按算法与数据结构类型总结+java面试知识(包括高并发知识) 写个简短的readme方便阅读吧,希望能帮助到一些人~~~ 目录结构 com.company包下的基本是按照公司名字进行分类的笔试题...
java笔试题算法 , , , , . 如果你发现自己陷入各种新技术、工具包围中,而纠结于该选择哪些学习,读读这篇文章,。 综合资源 资源链接汇集 ...各种主流语言的优秀项目汇集 ...前端工作面试题解答 - 深入Java
5.kdn251/interviews:Java面试题和答案(英文)。 GitHub: 6.phishman3579/java-algorithms-implementation:Java数据结构和算法实现。 GitHub: 7.aaberg/sql2o:小而美的数据库操作框架,性能略屌。 GitHub: 8....
偏向于软件工程师的面试资料整理。 推荐资料 :open_book: | 书籍 | :open_book: | 书籍 | :memo: | 文章 | (:thumbs_up:) 笔试: 面试: :memo: | 文章 | (:thumbs_up:) 技术面试必备基础知识、Leetcode 题解、Java...
自己整理了一些网上和书籍中的知识与笔记,来应对技术面试可能遇到的一些问题,包括算法,操作系统,计算机网络,Java、c++、Python、走。概念不是最重要的!概念不是最重要的!概念不是最重要的!练习题才是!重要的事情...
后续,在空闲时间总结了单链表的面试题目,排序算法等知识,目前在整理 Java 集合框架相关源码,相关文章在本人的掘金专栏和简书与CSDN博客都有发布。欢迎关注本项目的朋友去浏览。 > -- 2018年04月12日更新 Java ...
高级java笔试题 今天将历史技术博文重新整理了一下,分类更加清晰了,接下来尽量多写一些。 1. 关于如何入门机器学习/深度学习的方法 有很多朋友会问我要如何入门机器学习,第一篇文章中就给出了比较简单可行并且...
leetcode题库 Internship_Guidance 我是19年作为大三学生找的实习,一共拿到3份实习offer,分别是:阿里云数据库...算法题也是面试中一大考点,没做出来的话,面试很难通过。 在做算法题的过程中,一定要注意与面试官多
也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# ...
net的最近面试经典试题ASP.NET面试题集合 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中...