
算法与数据结构
faterazer
知行合一
展开
-
实现 sqrt(x):二分查找法和牛顿法
最近忙里偷闲,每天刷一道 LeetCode 的简单题保持手感,发现简单题虽然很容易 AC,但若去了解其所有的解法,也可学习到不少新的知识点,扩展知识的广度。创作本文的思路来源于:LeetCode Problem 69. x 的平方根简述题目大意(不想跳转链接,可以看这里):给定一个非负整数 x,要求计算并返回 x 的平方根(取整)。例如,输入 4,则输出 2;输入 8,则输出 2(8 的平方根...原创 2019-11-15 18:03:58 · 357 阅读 · 0 评论 -
二分求幂算法:快速的求幂计算方式
二分求幂法是快速计算形如 aba^bab 的求幂运算的方法。朴素计算 aba^bab 的方式是将 aaa 连乘 bbb 次,代码如下:int result = 1;for (int i = 0; i != b; i++) result *= a;这需要计算 bbb 次,而实际真的需要运算这么多次吗?答案是不需要,利用二分求幂法,我们可以使运算次数大大小于 bbb 次。那么什么是二分...原创 2019-08-25 14:06:40 · 490 阅读 · 0 评论 -
判断回文数算法
回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数。比如形如 121,1221,13531 的数字都是回文数,但 -121,10,25 等等都不是回文数。如何判断一个数是回文数?这是一个很简单的算法,最常见的实现方式是使用一个栈或其他方法,把数字序列逆序,然后判断逆序后的数字是否等于原先的数字。显然这种实现方式需要至少 n 次循环才能完成判断。本文提供一种更巧妙的方法,利用回文数...原创 2019-08-25 14:08:26 · 521 阅读 · 0 评论 -
蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数
0. 本文的初衷及蔡勒公式的用处前一段时间,我在准备北邮计算机考研复试的时候,做了几道与日期计算相关的题目,在这个过程中我接触到了蔡勒公式。先简单的介绍一下蔡勒公式是干什么用的。我们有时候会遇到这样的问题:看到一个日期想知道这一天是星期几,甚至看到一个历史日期或纪念日,我们想快速的知道这一天是星期几。对于这个问题,如果用编程的方式,应该怎么实现呢?你可能已经有思路了,比如你知道某个日期是星期几...原创 2019-08-25 14:14:22 · 636 阅读 · 0 评论