算法笔试题
wending-Y
这个作者很懒,什么都没留下…
展开
-
一个java数学题,给定一个数组,除了一个数出现1次之外,其余数都出现3次,输出出现一次的那个数。
给定一个数组,除了一个数出现1次之外,其余数都出现3次。找出出现一次的数。如:{1, 2, 1, 2, 1, 2, 7},找出7.格式:第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。import java.util.Scanner;import org.omg.CORBA.SystemException;publi原创 2016-07-19 23:02:15 · 3006 阅读 · 0 评论 -
选择排序
1.思路:2,1,5,3,6,4第一次排序,遍历全部数据选出最小的数字,排在第一位 得1,2,5,3,6,4第二次排序,从第二个数字开始选出最小的数字,排在第二位1,2,5,3,6,4package com.haut.algorithm;/** * @author xxx_xx * @date 2018/1/22 */public class SelectionSort {原创 2018-01-22 12:02:28 · 241 阅读 · 0 评论 -
插入排序
简单思想:以3,2,1为例,首先取3出来,排好,再取2出来和3比较,2比3小,于是3往后走一步,这个前面只有一个位置了,把2放进,再取1出来,依次与前面元素比较,如果前面元素,大于取出来的元素,把前面元素,往后走一个位置,如果不是,则把取出来的元素,放在前面元素的后面。代码package com.lei.test;public class InsertSort { private int原创 2017-07-02 21:31:17 · 253 阅读 · 0 评论 -
桶排序
简单思想:比如说分别将4,1,2,5,9,6,7,5这个数组进行排序,我们给定十个桶,分别编号0到9,把9放到编号为9的桶里,把7放到编号为7的桶里,输出时,只需按照从最大桶,到最小桶的顺序输出,就形成了排序 ,如果某个桶里有两个5,我们记这个桶的值为2,输出时,连续输出两次就ok了。代码public class BucketSort { private int[] buckets;原创 2017-07-02 20:55:40 · 264 阅读 · 0 评论 -
冒泡排序
简单思想,相邻两个数之间不断进行比较,如果前一个数比后一个数大,就把前一个数和后一个数进行交换,否则,不进行处理,继续比较。经过一次后,最大数就在最后了,前后,把最大数前面的数组,进行相同的操作,又得到一个相对大的数,重复进行。代码public class Test7 { public static void main(String[] args) { // TODO Aut原创 2017-07-02 20:30:55 · 208 阅读 · 0 评论 -
快速排序
简单思想:利用分治法,默认取数组第一个元素作为参考点,以参考点为例,把数组分成一半小于参考点,另一半大于参考点。以原始数据为例4,1,2,5,9,6,7,第一次排序为4,1,2,5,9,6,7,再用相同的方法,对5左边进行排序,对5右边进行排序。代码实现public class Test6 { public static void main(String[] args) {原创 2017-07-02 20:08:31 · 277 阅读 · 0 评论 -
当当笔试题(有n个人成一圈,顺序排号(编号为1到n),从第一个人开始报数1到3报数),凡报到3的人出圈子,从下个人开始继续报数,直到最后一个人,问最后留下在是第几号?)
-举例 12345678 第一次3走,第二次6走,第三次1走import java.util.ArrayList;import java.util.Scanner;public class dangdang { public static void main(String[] args) throws InterruptedException { // TODO A原创 2016-12-08 21:28:55 · 6537 阅读 · 0 评论 -
哲学家就餐问题实现
直接对筷子资源进行加锁,只允许一个人同时吃,这种情况只能同时一个人吃public class PerThread extends Thread { private static int[] chopstick = { 1, 1, 1, 1, 1 }; private int i; public PerThread(int i) { this.i =转载 2017-06-01 16:51:15 · 598 阅读 · 0 评论 -
动态规划,最长回文子序列(java实现),输入character,算法应该返回carac
因为考试要考动态规划,所以研究了下算法,参考了网上许多资料,但是自己总结一次,印象会更加深刻。源题目是输入character,这里换一个短点的,好分析一点,以bcdca为例。以db[i][j]代表从字符索引i到字符索引j的最长回文子序列。当然db[0][4]就是指的bcdca的最长回文子序列。其实这个问题和最长公共子序列问题非常像。接下来,我们考虑如何求db[0][4]的最长回文子序列。 我原创 2017-04-25 19:46:08 · 1994 阅读 · 0 评论 -
动态规划解决换钱的方法数
简述题目:用1元,2元,5元,换成20元。一共有多少种换法。每一种纸币数量不限。原创 2017-05-06 11:06:55 · 2764 阅读 · 0 评论 -
冒泡排序实例
public class MaopaoSort{ public static void main(String[] args) { // TODO Auto-generated method stub //冒泡排序 int a[]={10,12,14,15,9,4}; for (int i = 0; i < a.length-1原创 2016-06-16 20:26:58 · 1957 阅读 · 0 评论 -
插入排序实例
public class InsertSort { public static void main(String[] args) { // TODO Auto-generated method stub //插入排序 int a[]={10,12,14,15,9,4,1}; for (int k = 0; k < a.length原创 2016-06-16 20:59:55 · 1021 阅读 · 0 评论 -
解第一个数是1,第二个数是1,第三个数是前两个数之和,求第n个数的值。
斐波那契数列指的是这样一个数列 0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368public class de3 { public static void main(String[] args) { // TODO原创 2016-06-16 21:57:12 · 2510 阅读 · 0 评论 -
动态规划解决01背包问题(java实现)
01背包问题与背包问题的区别在于,01背包,物品的选择只有两种一种是拿,另一种是不拿,而背包问题在于,物品可以只取一部分。所以01背包问题不能用贪心算法解决。以dp[i][j]表示用i种物品,重量为j表示所取得的价值。对于第i种物品,如果第i种物品重量大于j,就证明第i种物品肯定不能取,这时的dp[i][j]=dp[i-1][j]如果第i种物品重量小于j,那就会出现两种情况,采用i的话,物品价原创 2017-04-30 13:52:12 · 9866 阅读 · 0 评论 -
回溯法解决N皇后问题(java实现)
回溯法解决N皇后问题(java实现)原创 2017-04-30 13:26:13 · 8114 阅读 · 0 评论 -
布隆过滤器原理及应用
1.先说下背景,肯定遇到这种情况,判断元素在不在一个集合里面,如果,集合里面的元素非常大,这个判断过程是非常耗时的,而且集合占用空间也很大。2.应用场景,网页黑名单,垃圾邮件过滤,电话黑名单,url去重,内容推荐等。3.原理:布隆过滤器实际上就是一个字节数组,字节数组的值是0或1,在添加元素的时候,对值通过多个hash函数的计算,得到多个0,1然后在字节数组里面在相应的位置设置值。这样处理...原创 2018-08-20 00:48:14 · 10771 阅读 · 1 评论