随笔分类 - Python
摘要:之前说过,python采用的是动态数组,并且我们可以用list来实现array结构。那么list和array是否完全一样呢?答案是否定的。 在array中,每个元素会以二进制的形式储存在内存里。比如:数值直接转换为二进制编码,字符串则先通过ASCII码转换为数值,再进而转换为二进制编码。因此,arr
阅读全文
摘要:堆栈(Stack):是一种线性数据结构,其数据遵循后进先出(last in first out)的原则。典型的应用比如说网页的“后退”按钮,其储存了依次浏览过的网页url(进栈),在按后退按钮时则实施出栈操作。 python实现: class Stack: def __init__(self): s
阅读全文
摘要:数组(Array): 是一种线性数据结构,其数据占据连续且空余(back to back & free)的内存位置。 数组分为静态数组和动态数组: 静态(static):每个item占据相同宽度的内存位置。其支持的语言比如Java。 动态(dynamic):每个item占据的内存位置要比所需的多,通
阅读全文
摘要:三门问题(Monty Hall problem)也称为蒙提霍尔问题或蒙提霍尔悖论,出自美国的电视游戏节目《Let’s Make a Deal》。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。 这个游戏的玩法是:参赛者会看见三扇关闭的门,其中一扇门后面有一辆汽车,选中后面有车的那扇门就
阅读全文
摘要:计算机技术已运用到人类生活的方方面面,帮助人类解决各种问题。可你是否有想过,计算机是否能为人类解决所有问题呢? 假如你是一个程序猿,你已编写过很多程序。有些程序一下子就能出结果,有些程序则好久都没有显示结果。你不知道这些程序到底最终是否会显示结果。你突然灵光一现 “能不能设计一个程序,用于检测任意程
阅读全文
摘要:动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法。它的名字和动态没有关系,是Richard Bellman为了唬人而取的。 动态规划主要用于解决包含重叠子问题的最优化问题,其基本策略是将原问题分解为相似的子问题,通过求解并保存重复子
阅读全文
摘要:汉诺塔问题源于印度的一个古老传说:梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上,并且规定小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。当所有的黄金圆盘都重新摆放在另一根柱子上时,世界就将在霹
阅读全文
摘要:世界上有些问题看似是随机的(stochastic),没有规律可循,但很可能是人类还未发现和掌握这类事件的规律,所以说它们是随机发生的。 随机漫步(Random Walk)是一种解决随机问题的方法,它与人类生活息息相关,例如醉汉行走的轨迹、布朗运动(Brownian Motion)、股票的涨跌等都可以
阅读全文
摘要:画一个边长为r的正方形和半径为r的四分之一的圆(如下图所示),向上面随机投掷飞镖,通过计算落在星星区域和整体区域的飞镖比例,即可求出π值。 公式推导如下: 假设正方形的边长r为1,那么飞镖落在星星区域内的任意点(x, y),其坐标的平方相加值(x2+y2)必然小于1。 代码如下: 投掷1000000
阅读全文
摘要:为什么要了解算法的效率? 一般来说,编程就是把各种已知的算法代入到自己的代码当中,以此来解决问题。因此,了解各种算法的效率对于我们选择一个合适的算法有很大帮助。 算法的效率由什么确定? 从算法分析的理论来讲,算法的效率通常由它们的复杂度来评估,包括时间复杂度和空间复杂度。由于现代计算机RAM空间充足
阅读全文
摘要:牛顿法(Newton’s method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法。(注:Joseph Raphson在1690年出版的《一般方程分析》中提出了后来被称为“牛顿-拉弗森法”的数学方法,牛顿于1671年写成的著作《流数法》中亦包括
阅读全文
摘要:Python里面有内置(Built-in)的平方根函数:sqrt(),可以方便计算正数的平方根。那么,如果要自己定义一个sqrt函数,该怎么解决呢? 解决思路: 1. 大于等于1的正数n的方根,范围肯定在0~n之间;小于1的正数n的方根,范围肯定在0~1之间 2. 用二分法(Bisection me
阅读全文
摘要:所谓回文字符串,就是一个字符串从左到右读和从右到左读是完全一样的。比如:"level" 、“aaabbaaa”、 "madam"、"radar"。 如何判断字符串是否是回文呢?解决思路如下: 1. 采取穷举法(Brute Force algorithm),枚举并检查(enumerate & chec
阅读全文
摘要:先科普一下什么叫斐波那契数列,以下内容摘自百度百科: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,指的是这样一个数列:1、1、2、3、5、8、13、21、34。。。这个数列
阅读全文