以图明志

数据结构

用单循环链表来玩一下约瑟夫环游戏

单循环链表的练习
一群小孩围成一圈,每个小孩都会带有一个随机的密码。然后设定一个数m,从第一个小孩数起,数到第m个的时候,该小孩离开。小孩离开时,其携带的密码将更新这个m值,顺序往下数的第m个小孩会继续出列。依次这样数下去,最后一个小孩是胜利者,问:胜利者是第几个小孩?

计算机数学与基础

从PHP与Python的语言比较去了解什么是图灵完备

一切可计算的问题都能计算
先从一个问题开始。从语言的区别看,有什么功能python能实现,php不能实现的呢?从非常严格的理论角度来说,答案是:没有。因为PHP和Python都是图灵完备(Turing complete)的语言,所以理论上你找不到一个Python能做到而PHP做不到的事情。那么,什么是图灵完备呢?

数据结构

单链表排序之选择排序

通过这个理解单链表的排序方法
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目。单链表排序的关键是交换算法,需要额外考虑。选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序。如果需要对选择排序复习一下,传送门:算法导论:选择排序的原理与实现。

数据结构

面试题:如何删除单链表的重复结点

使用三个结点完成算法
写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。解决的思路如下:建立指针p,用于遍历链表;建立指针q,q遍历p后面的结点,并与p数值比较;建立指针r,r保存需要删掉的结点,再把需要删掉的结点的前后结点相接。

计算机算法

海盗分宝石面试题的头脑风暴

逆推的思考
五个海盗得到100颗钻石,颗颗价值连城。这五个海盗非常聪明,都想自己得到钻石最多。因而他们设计了个规则,根据抽签后的顺序, 每个人提出个分配方案,如果有半数以上(不包括半数)的人表决通过,则按这个方案执行,否则提出方案的人要被扔到海里喂鱼。下一个人开始提方案,以此类推。

计算机算法

趣味算法:老鼠试毒瓶问题

二进制的巧妙使用
大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?这个问题的答案也堪称经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进制数。

编程思想

多点使用短函数

短函数的优点
还记得刚学编程那时关于“为什么要用函数”的问题吗?那就是把重复的代码归纳到一个函数中多次利用。这点毋庸置疑,大家也用的很熟了,但是除了这个还有什么改进空间吗?答案肯定是有的。大家都知道当一个函数很长的时候,就会造成阅读困难,那以前我们都是怎么解决的呢?

编程思想

你嗅到了代码腐化的味道了吗?

很有必要加以查看与修改
代码腐坏的味道是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。

编程思想

从编程的命名谈编码质量问题

望文生义正是语言文字的根本使命
很多人以为提高编码质量,需要很多激动人心的创新,需要明显的飞跃,这也许对,但我个人感觉项目中提高编码质量是个水磨功夫,要一步步积累,方法论大多时候帮助不大。这次先从命名说起。当我们看到一份设计图或一份代码时,大多数人会【望文生义】。

编程思想

编程语言中的闭包是什么东西?

对闭包的一个简单深入的理解
首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天天在和它打交道,甚至有过一个function套一个,一个方法中套了20多个function的极端例子,但从未深究过它是怎么实现的,它就像水和空气一样,我们不需要知道水是H2O,空气是氧气氮气二氧化碳等的混合物。

计算机算法

JavaScript语言描述的最大公共子串问题

常见的做法是使用矩阵
求最大公共子串,常见的做法是使用矩阵。假设有字符串:abcdefg和字符串abcd,则可构成如下矩阵。对两个字符串的每一项都进行比较,若匹配则该项为1,不匹配则为0。然后求出对角线最长为1的那一段序列,即为最大公共子串。看上面的分开,似乎得使用二维数组了,在两个字符串都较大的情况下不是很划算,是否可以进一步优化?

计算机算法

趣味算法:生男生女的比例

阿里巴巴的一道面试题
阿里巴巴的一道面试题:说澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?刚看到问题是的思维逻辑:用递推法,假设一对夫妻,生了个女儿,就不再要了;另外一对夫妻,生了个儿子,再要一个,是女儿,然后也就不要了。第一感觉,应该是女的比男的多。

编程思想

使用单例模式需要注意的几个问题

单例模式存在一些问题与缺陷
今天重新翻看单例模式,把以前的几个问题和大家共享下。单例模式是最简单的设计模式之一,但是它却存在一些问题与缺陷。下面简单说下单例模式的使用中需要注意的一些问题。在一些情况下使用单例模式是可以达到节省资源的目的,但是单例模式的意图不只是为了节省资源。

编程思想

有了系统语言,为什么我们还要脚本语言?

脚本语言的重要性
脚本语言,维基百科上定义为,“为了缩短传统的编写—编译—链接—运行过程而创建的计算机编程语言。通常具有简单、易学、易用的特色,目的就是希望开发者以简单的方式快速完成某些复杂程序的编写工作”。普通如Ruby、Python,简单如JavaScript、Lua之类,都是我们日有所闻,时有关心,往往所用的编程利器。
1 / 14 首页 < Prev 1 2 3 4 5 Next > 尾页 页码: