编程之美
看看编程之美书中的内容
VoidHope
移动开发。
展开
-
字符串的最大回文子串
求给定的一个字符串中的最大回文子串一般第一想到的方法应该就是循环,回文就是以某个字符为中心向两侧扩展,并且两侧对称。这样的解决方法执行时间复杂度会是O(n2n^2n2)。如何做到线性负责度呢。那就是Manaker算法了。我这里只给出我的Java单个方法的实现,分析的内容可以参考给出的链接。 public String longestPalindrome(String s) { ...原创 2019-02-12 14:34:01 · 1182 阅读 · 0 评论 -
找出最大的k个数
这是一个算法中很常见的问题,遇到这个题开始像我这种还未养成算法思维的人,第一想法就是先排序然后直接去前K个大的数就好。但居然在笔试中遇到这个题,那最最普通的这种解法肯定肯定是无法满足结果的。而且一旦数据量一大,即便排序效率高也需要花上不少时间。这里不再谈普通的解决方法。第二种解法是利用快排算法,做相应改变,执行有限次数获取前K大的数。假设N个数存储在集合S中,从S中 随机 取一个数X,...原创 2019-01-22 12:11:07 · 1571 阅读 · 0 评论 -
求一个二进制(8bits)中1的个数
对于一个字节(8bits)无符号变量,求其二进制表示中“1”的个数,要求算法执行效率尽可能高第一眼看着这个题的时候,觉得很简单,就是求二进制中1的数。但是细细品味,又想不到什么好方法,怎么统计呢?还是看看基础的解法吧。以二进制数10100010为例。 /** * 通过二进制数除以2的方式统计,取模2值为1时,统计数增1 * 反之不加,后再除以2取整部分 *...原创 2019-01-22 10:51:34 · 2123 阅读 · 0 评论