
算法
文章平均质量分 71
hinyunsin
南京大学软件学院本科,北京大学软件学院硕士,2012年在上海大智慧股份有限公司任职至2014年4月,离职时担任新技术架构部高级技术开发经理,离职后加入上海多棱镜网络科技有限公司任职CTO。
展开
-
读《编程之美》有感—中国象棋将帅问题
请参照书P13-18. 题目是这样的: 在书中给出了这样的一个解法,却没有给出对这个解法的诠释,这里就对这个解法阐述一下自己的个人观点。 char i=81; while(i--) { if(i / 9 % 3 == i % 9 % 3) continue; printf("A = %d, B = %d/n", i / 9 + 1, i % 9 + 1); } return 0; 对于任意的一个数,我们可以得到这样的原创 2011-03-25 15:43:00 · 1927 阅读 · 0 评论 -
Linux下设计一个简单的线程池
定义 什么是线程池?简单点说,线程池就是有一堆已经创建好了的线程,初始它们都处于空闲等待状态,当有新的任务需要处理的时候,就从这个池子里面取一个空闲等待的线程来处理该任务,当处理完成了就再次把该线程放回池中,以供后面的任务使用。当池子里的线程全都处理忙碌状态时原创 2011-08-01 15:19:21 · 23133 阅读 · 31 评论 -
谈谈如何判断一个Pop序列是否是一个Push序列的Pop顺序
有这样一道题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。 我们来模拟入栈和出站的过程:这里有三个角色:Push序列:它的动作只有一个那就是不断地将自己的元素一个个Push到栈Stack中,直到结束;Stack栈:它的动作则有原创 2011-07-29 14:57:10 · 4082 阅读 · 0 评论 -
读《编程之美》有感—判断两个链表是否相交
请参照书P233-235.这道题让我联想起几道关于单向链表的经典题目:如果判断一个单项链表是否存在环?已知一个单向链表存在环,如果找出该环的入口点?已知两个链表相交,如何找出相交的第一个节点?如果对一个单向链表进行反转?已知一个单向链表,不知道该链表的头指针,已知一个原创 2011-03-13 20:21:00 · 2196 阅读 · 0 评论 -
关于飞机绕地球飞行一圈的加油问题
已知: 每个飞机只有一个油箱,飞机之间可以相互加油,注意是相互,没有加油机,一箱油可供一架飞机绕地球飞半圈。 问题: 为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机? A:所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中原创 2011-07-25 15:31:54 · 27602 阅读 · 5 评论 -
Python练手之根据前序和中序&根据中序和后序重建二叉树,输出前序、中序和后序遍历结果
这是根据本人另一个C语言版本采用python实现的,更多详细解释可参考:http://blog.youkuaiyun.com/hinyunsin/archive/2011/04/11/6315502.aspx#-*- coding: utf-8 -*-#!/usr/bin/python#Filename: BTreeNode.py'''Created on 2011-4-11@author: boyce@contact: boyce.ywr@gmail.com@version: 1.0'原创 2011-04-11 17:40:00 · 5142 阅读 · 0 评论 -
根据二叉树的前序和中序求后序
在面试的过程中,发现有几家公司都喜欢考这样的一道题,就是在一棵二叉树中,已知这棵二叉树的前序和中序遍历结果,要求写出后序遍历结果。 例如:在一棵二叉树总,前序遍历结果为:ABDGCEFH,中序遍历结果为:DGBAECHF,求后序遍历结果。 我们知道,前序遍历方式为:根节点->左子树->右子树中序遍历方式为:左子树->根节点->右子树后序遍历方式为:左子树->右子树->根节点 从这里可以看出,前序遍历的第一个值就是根节点,然后再中序遍历中找到这个值,那么这个值的左边部分即为原创 2011-04-11 14:31:00 · 37981 阅读 · 3 评论 -
读《编程之美》有感—1的个数:数字x的个数
题目是这样的:给定一个十进制的正整数N,写下从1开始,到N的所有证书,然后数一下其中出现的所有"1"的个数。例如:N=2,写下1,2。这样只出现了1个"1"。N=12,我们会写下1,2,3,4,5,6,7,8,9,10,11,12。这样1的个数是5.问题是:写出一个函数f(N),返回1到N之间出现"1"的个数,比如f(12)=5在32为整数范围内,满足条件"f(N)=N"的最大的N是多少?书中的解法二是:通过分析"小于等于N的数在每一位上可能出现1的次数"之和来得到这个结果。原创 2011-04-13 19:41:00 · 3169 阅读 · 0 评论 -
百度Intern面试题之二叉树的网络传输及恢复--二叉树的文件存储和读取
这不是我的面试题,是一个同学在百度的面试题。 要求将一颗二叉树通过网络传输到给另一个客户端,并且在该客户端恢复为原始二叉树。 这道题目可以理解为如何将一颗二叉树存储到文件中,并且读取后正确恢复。 我想到了三种解决方法: 1. 二叉树补全法,将这课二叉树补全,变成一颗完全二叉树,再使用数组进行存储,写入文件中。这样做需要在节点中增加一个属性,标记是否为补全的节点。 这种方法不太合理,因为使用了补全操作,对于一颗很不规则的二叉树,将会占用非常大的存储空间,并且修改了二叉树的属性。 2. 游标实现原创 2011-03-31 19:51:00 · 7290 阅读 · 2 评论 -
有道Intern面试题之最小对称数
这是上两周在有道Intern面试的一道题目,虽然最后我嫌麻烦,很傻的中途就拒掉了有道(唉,真的很傻,我后来还把Intel给拒掉了,结果又因为期望法国电信给出intel相同的实习工资,而导致法电背着我另外找了一个新人,最后导致自己重新回归了"待业"状态。。。)。在网上搜了搜,发现原来这又是一道经典的算法题,唉,自己看的算法题还是很有限的,要努力啊。 题目是这样的:给定一个字符串描述的正整数,给出大于该正整数的最小的一个对称数(对称数像1221,12321,例如比1220大的对称数是1221)S原创 2011-03-25 16:27:00 · 2988 阅读 · 1 评论 -
线程池已更新,测试已无bug,欢迎反馈
貌似距离上一篇博客的更新快一年了,中间遇到实习,找工作,过年,继续实习,等待毕业等等事情,还赶上csdn密码泄漏事件,一直没怎么更新过博客。后来几位网友反应了线程池的一些问题,中间没怎么有时间,也有点懒散了,到今天才把几个bug修复。修正后的源码已经在sourceforge上更新。该线程池支持动态增加线程,管理线程定时回收多余的空闲线程。 V1.02: 修正线程池死锁原创 2012-05-14 23:00:41 · 2348 阅读 · 2 评论