
算法题
文章平均质量分 66
kaiseu
把你的心给我一小部分,把我的整个拿去...
展开
-
Java字符串题目--删除给定字符串中出现次数最少的字符
输入一段字符串,字符串中只包含大小写字母。要求完成函数删除给定字符串中出现次数最少的字符。 输出删除完的字符串。如果有多个出现次数一样的字符,都为最少时,一并删除。例如:输入:abbccd,输出为bbcc。分析:删除出现次数最少的也就是保留出现最多的,但是可能有多个出现最多的,如上面的例子,就要考虑记录出现最多的字符以及出现的次数。public class MaxCharacter原创 2015-08-09 19:34:48 · 5084 阅读 · 1 评论 -
面试中的二叉树题目
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。转载 2015-10-11 20:39:49 · 719 阅读 · 0 评论 -
写一函数判断某个整数是否为回文数
写一函数判断某个整数是否为回文数,如12321为回文数。将整数逆序后形成另一整数,判断两个整数是否相等来实现的。int IsEchoNum(int num) { int tmp = 0; for(int n = num; n; n/=10) tmp = tmp *10 + n%10; return tmp==num;}int main(int argc, char原创 2015-09-22 10:00:33 · 14494 阅读 · 0 评论 -
一致性哈希及java实现
1、一致性hash介绍一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此,引入了一致性哈希算法转载 2015-11-10 15:44:42 · 2205 阅读 · 1 评论 -
Java归并排序
归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合转载 2015-10-16 22:18:11 · 608 阅读 · 0 评论 -
全排列和全组合实现
Java版C++版转载 2015-10-16 18:56:32 · 641 阅读 · 0 评论 -
快速排序算法Java实现
1、算法概念。快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。2、算法思想。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。3、实现思路。①以第一个关键字 K转载 2015-10-16 22:14:00 · 798 阅读 · 0 评论 -
判断单链表是否存在环,判断两个链表是否相交问题详解
有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fas转载 2015-09-07 20:28:28 · 687 阅读 · 0 评论 -
字符串匹配的KMP算法、Boyer-Moore算法
阮一峰blog:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html转载 2015-09-10 18:24:28 · 778 阅读 · 0 评论 -
100层楼扔两个鸡蛋的问题
两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。 最少需要几次测试,才能得到摔碎鸡蛋的楼层?方案如何?================================================= 对于这个问题,如果从编程角度而言,最转载 2015-08-03 21:28:17 · 8306 阅读 · 0 评论 -
Java字符串编程--最长连续字母序列的长度
给定一个 query 和一个 text,均由小写字母组成。要求在 text 中找出以同样的顺序连 续出现在 query 中的最长连续字母序列的长度。例如, query 为“acbac”,text 为 “acaccbabb”,那么 text 中的“cba”为最长的连续出现在 query 中的字母序列,因此, 返回结果应该为其长度 3。请注意程序效率。思路:用一个矩阵来记录两个字符串中原创 2015-08-15 22:17:42 · 3152 阅读 · 0 评论 -
java杨氏矩阵查找算法
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字6,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。1 2 8 92 3 9 124 7 10 13转载 2015-08-14 21:34:46 · 1548 阅读 · 0 评论 -
java两个线程打印奇数和偶数
设计两个线程类,一个线程类负责打印100以内所有的偶数,另一个线程打印100以内所有的奇数。要求偶数线程每打印10个偶数以后,就让奇数线程打印10个奇数,如此交替进行。public class TwoThreadPrint { public static void main(String[] args) { PrintBean bean = new PrintB原创 2015-08-13 18:20:06 · 4356 阅读 · 0 评论 -
Java字符串题目--去除重复字符并排序
去除重复字符并排序:输入: 字符串输出: 去除重复字符并排序的字符串样例输入: aabcdefff样例输出: abcdef统计出现的过的字符串,并将相应的数组位置为1,然后遍历数组,为1的将对应的字符输出。package com.huawei;import java.util原创 2015-08-10 19:03:55 · 13681 阅读 · 7 评论 -
寻找丑数
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 分析:寻找一个数是不是满足某种数(质数,水仙数)等,最简单的方法就是遍历,对于任意一个丑数必定可以写成2^m*3^n*5^p,因而对于一个丑数,只含有2,3,5因子,也就意味着该数number转载 2015-07-29 15:18:47 · 625 阅读 · 0 评论 -
大数相乘、大数相加、大数相减Java版本
题目:两个非常大的数字相乘(相加,相减) 该题目在java中可以使用BigInteger类中的方法来实现。否则的话可以使用如下方式来实现。 大数相乘:假设有A和B两个大数,位数分别为a和b。根据我们平常手动计算乘法的方式可以看出,最终的结果的位数c一定小于等于a+b,我们可以举一个简单的例子来说明,99*999=98901,最终结果是五位(a+b)。下面我们转载 2015-08-09 20:28:11 · 1941 阅读 · 0 评论 -
c++快速排序
//基于partition函数的快速排序int partition(int *data, int start, int end){ if(data == NULL || start > end){ return -1; } int index = data[start]; int i = start,j = end; while(i < j){ while(i= index)原创 2015-10-30 11:35:10 · 670 阅读 · 0 评论