算法
文章平均质量分 51
the__apollo
水滴石穿,不舍昼夜
展开
-
从一道easy leetcode问题,谈谈最大子列和的Kadane算法
发现网上讲解kadane算法的文档都是英文的,于是自己就拿中文总结一下,希望能对大家有所帮助。最大子列和问题是算法中的经典问题。记得一年前刚学数据结构时,还总结过一篇求最大子列和算法的博客。博文地址:最大子列和的四种算法比较昨天无事刷leetcode,被一道easy的题目难住,121. Best Time to Buy and Sell Stock。拿java写了三十多行代码,最后还是计算错误。无奈原创 2017-08-18 11:22:45 · 4142 阅读 · 2 评论 -
198. House Robber,又发现一道数学归纳法在leetcode中的应用题
上一道利用到数学归纳法的题目是求最大子列和的Kadane算法,今天做leetcode又遇到了一道及其类似的题目,也是从零开始一步步求解最优解,直至最后得出我们想要的答案。这种思想非常的重要!! 题目地址:198. House Robber 它的算法思想是:从0开始一步步生成最终的数列,得出最大的值(是不是和kadane算法很像!!) f(0) = nums[0] f(1) = max(n原创 2017-11-20 17:41:34 · 530 阅读 · 0 评论 -
翻转链表的三种方法(python实现)
具体方法来自看图理解单链表的反转,以下为该博客中方法的python实现以及测试方法一:利用三个指针逐个翻转def func1(head): p = head q = head.next p.next = None while q: r = q.next q.next = p p = q q = r原创 2017-12-11 09:17:15 · 14028 阅读 · 7 评论 -
删除单向链表中最小值
原题目:在单链表L中删除一个最小值节点,算法尽可能高效,且假设最小值节点为唯一。原答案实在是蠢,特别复杂,看不懂,不想看。自己写了个递归,时间复杂度o(n),空间复杂度o(1),优雅的解决了这个问题。class LNode: def __init__(self, x): self.val = x self.next = Nonedef func(head,原创 2017-12-11 10:45:21 · 2088 阅读 · 0 评论 -
简述大数分解算法Pollard Rho和Pollard p-1
大数分解问题其实至今都是一个世界级难题,最常见的分解法是从2一直找到sqr(N),作为一个密码学专业的学生,每次看到别人这么做来进行因子分解,自己都控制不住想要制止他,因为这个算法的效率简直太太太太太低了。于是,简单介绍一下牛逼哄哄的Pollard算法,专制各种大数。先说rho算法。rho算法其实是一种概率上的算法,虽然是靠概率,但是其准确率非常高(99.9%),更重要的是,该算法效率...原创 2018-05-11 12:16:12 · 12319 阅读 · 0 评论 -
排序算法总结(Java版)
一.冒泡排序 冒泡排序,就是每次比较,大的元素往后挪,比较完第一遍后,最大的元素排到了数组的最后一位 。第二次比较,还是从第一个元素开始和后面的比较,把剩余的最大的元素拍到数组的倒数第二位,第一轮比较的最大元素不参与比较 。程序实现:/*冒泡排序*/public class Sort1 { public int[] sort(int[] nums){ int t...原创 2018-05-14 14:16:43 · 425 阅读 · 0 评论 -
拍案叫绝的算法(一)
问题:有一个黑匣子,黑匣子里有一个关于 x 的多项式 p(x) 。我们不知道它有多少项,但已知所有的系数都是正整数。每一次,你可以给黑匣子输入一个整数,黑匣子将返回把这个整数代入多项式后的值。那么,最少需要多少次, 我们可以得到这个多项式每项的系数呢?答案:两次。第一次,输入 1 ,于是便得到整个多项式的所有系数之和。记作 S 。 第二次,输入 S + 1 ,于是黑匣子返回的是 ...原创 2018-05-14 21:21:33 · 686 阅读 · 0 评论 -
拍案叫绝的算法(二)
问题:求一个数n的各位上的数字和,如果这个和大于等于10,接着做以上操作。解答:这道题的算法只有一句话return (n != 0 && n % 9 ==0) ? 9 : n%9 ;理由很简单,10的m次方模9肯定是1。...原创 2018-05-14 21:26:41 · 430 阅读 · 0 评论