算法100days
Antidote1224
这个作者很懒,什么都没留下…
展开
-
Day3:下一个排列
leetcode地址:https://leetcode-cn.com/problems/next-permutation/Day3:下一个排列一.问题背景:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→...原创 2019-07-01 16:18:02 · 221 阅读 · 0 评论 -
Day12:一元N次方程的根(略窥群论一二)
注:本来只是单纯的一元N次方程根求解问题,结果我忽然对为什么一元五次以上方程没有求根公式产生好奇,结果就用了两个下午十分粗略的了解了一下阿贝尔定理的证明。附录:1. 为何从一元五次方程开始就没有由有限次加、减、乘、除、开方运算构成的求根公式了?https://www.zhihu.com/question/29316970 2.一元多次方程通解(2-4次)ht...原创 2019-07-16 15:52:55 · 3158 阅读 · 0 评论 -
Day14:哈夫曼编码
Day14:哈夫曼编码一.问题背景:python3 Counter类(计数器):https://www.cnblogs.com/zhenwei66/p/6593395.htmlpython奇技淫巧——max/min函数的用法https://www.cnblogs.com/whatisfantasy/p/6273913.html...原创 2019-07-18 12:01:18 · 167 阅读 · 0 评论 -
Day11:麦卡锡91函数(McCarthy 91)
Day11:麦卡锡91函数(McCarthy 91)一.问题背景:McCarthy 91 是一个递归的函数表达式如下: 函数的意思是当输入一个大于 100 的数字 n 时返回 n-10,当 n<10 的时候递归的对 n 进行运算,但是结果总是 91。二. 解决思路:递归。注:仍未理解该函数的意义以及使用情...原创 2019-07-11 16:28:34 · 4244 阅读 · 1 评论 -
Day6:逆波兰表达式求值(后缀表达式)
leetcode地址:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/Day6:逆波兰表达式求值一.问题背景:二. 解决思路:逆波兰表达式求值:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。逆波兰...原创 2019-07-05 10:38:30 · 515 阅读 · 0 评论 -
Day10:字符串相乘(Karatsuba 乘法)
leetcode地址:https://leetcode-cn.com/problems/multiply-strings/Day10:字符串相乘(Karatsuba 乘法)一.问题背景: 因为字符串相乘问题涉及字符串相加,因此先引入字符串相加问题。 leetcode地址:https://leetcode-cn.com/problems/add-str...原创 2019-07-09 11:14:27 · 429 阅读 · 0 评论 -
Day5:计数质数(埃拉托色尼筛选法)
leetcode地址:https://leetcode-cn.com/problems/count-primes/Day5:计数质数一.问题背景:统计所有小于非负整数n的质数的数量。二. 解决思路: 埃拉托色尼筛选法:先将(2,N)的各数放入表中,然后在 2 的上面画一个圆圈,然后划去 2 的其他倍数;第一个既未画圈又没有被划去的数是 3,将它画圈,再划去 ...原创 2019-07-04 10:43:21 · 425 阅读 · 0 评论 -
Day2补充:钢管切割问题
转自:https://blog.csdn.net/cyp331203/article/details/42806159Day2补充:钢管切割问题一. 问题背景:某公司生产长钢管,然后一般,会将钢条切断,变成不同长度,然后去售卖。其中有个问题是,不同长度的钢管的售价是不一样的,但是它们并不是完全按照比例来,比如2米的钢管售价要比3米的钢管售价要少,但是并不是2比3的比例。钢管的长度售价表...转载 2019-06-28 14:37:49 · 735 阅读 · 0 评论 -
Day2:矩阵链乘法
Day2:矩阵链乘法一. 问题背景:给定一个n个矩阵的序列(矩阵链),我们希望计算它们的乘积 为了计算表达式,我们可以先用括号明确计算次序,然后利用标准的矩阵相乘算法进行计算。由于矩阵乘法满足结合律,因此任何加括号的方法都会得到相同的计算结果。我们称有如下性质的矩阵...原创 2019-06-28 11:53:34 · 411 阅读 · 0 评论 -
Day9:蒙特卡洛法(求圆周率)
Day9:蒙特卡洛法(求圆周率)一. 问题背景:在只有一个随机数生成器的情况下如何估计π的大小?二. 解决思路:蒙特卡洛法: 蒙特卡洛方法又称统计模拟法,随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法。是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近...原创 2019-07-09 10:43:44 · 3688 阅读 · 0 评论 -
Day4: 位1的个数
leetcode地址:https://leetcode-cn.com/problems/number-of-1-bits/Day4: 位1的个数一.问题背景:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。二. 解决思路:1. 循环移位法 通过右移操作,每右移一位就通过与1按位与来判断最后一位是否为...原创 2019-07-03 11:28:20 · 194 阅读 · 0 评论 -
Day1:汉诺塔
Day1:汉诺塔一. 问题背景:汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着N片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?二....原创 2019-06-27 17:25:17 · 204 阅读 · 0 评论 -
Day7:二进制求和(有限状态机法待补全)
leetcode地址:https://leetcode-cn.com/problems/add-binary/Day7:二进制求和一.问题背景:二. 解决思路:将二进制转换为十进制进行相加,结果转换回二进制输出。三. 算法实现:def addBinary(a, b): return str(bin(int(a, 2) + int(b, 2)))[2:]...原创 2019-07-08 11:21:36 · 260 阅读 · 0 评论 -
Day8:搜索插入位置(二分查找)
leetcode地址:https://leetcode-cn.com/problems/search-insert-position/submissions/Day8:搜索插入位置一.问题背景:二. 解决思路:二分查找: 二分查找也被称为折半查找,是在一个有序数组中查找特定元素位置的查找算法。二分查找要求查找序列采用顺序存储,且按关键字有序排列。 ...原创 2019-07-08 13:23:41 · 309 阅读 · 0 评论 -
Day13:拓展欧几里得算法
Day13:拓展欧几里得算法一.问题背景:计算a、b两个整数的最大公约数。二. 解决思路:1. 欧几里得算法(辗转相除法): 辗转相除法, 又名欧几里得算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0...原创 2019-07-17 11:08:55 · 510 阅读 · 0 评论