程序设计
进击的部落
努力为将来奋斗着
展开
-
微软面试题:编程实现两个正整数的除法
题目描述题目就是求两个整数的除法,不能用除号。分析: 第一眼看到这个题目的时候,想法是这个题主要考察的是代码的鲁棒性,得考虑好输入的各种情况,容错性得做好了 先搞清楚输入是什么?两个32位?的有符号、无符号整数?返回的是什么?是float型?还是int型,这都是需要先搞清楚的。 此处假定输入是两个32位的有符号整数(int),返回是int。接下去,想下测试用例原创 2013-07-16 10:05:41 · 1953 阅读 · 0 评论 -
STL中map、set的数据结构及底层实现
摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。vector(向量)——STL中标准而安全的数组。只能在vecto转载 2013-09-15 20:53:56 · 1308 阅读 · 0 评论 -
一道渡口模拟题
一个港口上有N辆车排队,有卡车和货车,用0代表卡车,1代表货车,现在有如下规则,当同类型的车排队时,先来的车在前面,而卡车和货车来时,卡车先,除了以上规则外,还有如下规则:当有4辆卡车时,必须有一辆货车,当没有货车时,卡车可以排上,当卡车不到4量时,可以用货车补上,下面是一个例子7输入:0 0 1 0 1 0 0输出:0 1 3 5 2 6 4下面讲下思路:对于输入我们可以编号原创 2013-09-15 16:25:19 · 1939 阅读 · 0 评论 -
一道智力题
一块矩形的巧克力,初始时由N x M个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成N x M块1x1的小巧克力? 我们可以这么想,因为题中只允许每次都掰一块巧克力,那我们从简单的情形考虑,当是一条1x M的巧克力时,最少需要M-1次,故对N x M的巧克力,我们可以先掰成 N条1XM的巧克力,则此时需要N-1次,再对每个1x M掰M-1次,则原创 2013-09-14 15:42:18 · 6233 阅读 · 0 评论 -
一道TOPK问题
今天遇到一道TOP k的变形题,题目大概意思是有10W个随机整数,然后对这些数进行如下操作:1.当能被3整除时,将此数替换为此数和其它数两两相加的数,包括数本身2.当不能被3整除时,将此数替换为原数的两倍问当变换后的数中,输出最小的K个数,复杂度尽可能低解: 此题可以先对10W个数用partition的思想,找出最小的K个数,然后对K个数进行排序,接着开始遍历K个数原创 2013-09-14 15:33:20 · 1018 阅读 · 0 评论 -
一道谷歌面试题
今天在网上看了一道面试题:给定三个整数a,b,c,实现函数int median(int a, int b, int c),返回三个数的中位数。不可以使用sort,要求整数操作(比较,位运行,加减乘除等)次数尽量少。 并分析说明程序最坏和平均情况下使用的次数。 看到这道题,第一想法是什么是中位数?于是百度了下:中位数(Medians)统计学名词,是指将统计总体当中的原创 2013-08-12 10:34:59 · 1264 阅读 · 0 评论 -
华为读写者面试题
题目概述:1.A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。题目中有4个进程,然后一个写者,三个读者,对写者来说,写完一个数据后,必须等待3个读者都读完后才能继续写。此处有A和B、C、D分别互斥,然后A写完后,必须等待BCD都读完后,才能继续写,这是一个同步问题,所以总结起来就是3个互原创 2013-08-07 21:09:53 · 1518 阅读 · 0 评论 -
二分查找
二分查找 编程珠玑第4章中提到:虽然第一篇二分搜索论文在1946年就发表了,但是第一个没有错误的二分搜索策略却直到1962年才出现,由此可见二分查找思想虽然简单,但是要写好还是很难的。 那二分查找会出现那么多错误,主要是因为什么原因呢?边界问题 在二分查找的时候,边界很重要,需要理解查找的边界是什么? 边界主要可以分为[l原创 2013-08-05 21:45:41 · 1100 阅读 · 1 评论 -
二分查找程序
地址http://blog.163.com/yuwei_1_yw/blog/static/1751722220083932157623/《编程珠玑》(第二版)一书第四章中提及过100多名专业程序员使用两个小时的充足时间编写一个简单的二分查找程序,结果发现90%的人编出的代码都有BUG,Knuth也在他的《Sorting and Searching》一书中提过,第一个二分查找程序在1946年已经转载 2013-08-05 21:54:11 · 1797 阅读 · 0 评论 -
Cracking the coding interview Q1.1
题目描述Implement an algorithm to determine if a string has all unique characters What if you can not use additional data structures?在不使用额外数据结构的情况下,实现一个算法判断一个字符串中的字符是否都没有重复?解析:初看到这道题的时候,脑中第一印象是前原创 2013-08-05 18:09:57 · 750 阅读 · 0 评论 -
Cracking the coding interview Q1.2
题目描述 Write code to reverse a C-Style String (C-String means that “abcd” is represented as five characters, including the null character )写一段代码对字符串进行翻转char* reverseStr(char *str ){ if ( str原创 2013-08-05 18:44:47 · 782 阅读 · 0 评论 -
数组中逆序对
// 对一个数组,求其逆序数。采用归并的求法,复杂度为0(nlgn)#include bool g_InvalidInput = false;int InversePairsCore( int *data, int *copy, int first, int last ){ if ( first < last ) { int m = first + (last - first原创 2013-07-29 20:56:55 · 632 阅读 · 0 评论 -
根据前序和后序构建二叉树
编程之美上有道题是根据前序和中序来构建二叉树,当元素不同时,此树是唯一的。当要根据前序和后序来构建二叉树时,此时即使元素都不同,也不是唯一的,举个例子// 1 1// / \// 2 2// / \//3 3// preorder 1 2 3// postord原创 2013-08-03 20:09:10 · 1594 阅读 · 0 评论 -
字符串匹配问题
KMP算法 字符串比较算法中KMP算法大名鼎鼎,其主要思想是先进行预处理,对模式字串提取出一些有用的信息,然后再进行字符串比较,就可以减少比较的次数。 而KMP的关键是对模式串的有用信息的提取,即提取什么特征值,提取出来后可以加速字符匹配的过程。 下面举个例子来说明究竟应该提取什么特征值。字符串:abcabaabc模式串:abaa原创 2013-07-16 16:45:22 · 688 阅读 · 0 评论 -
百度2013校招题解
程序设计题:3:有20个数组,每个数组有500个元素,并且是有序排列好的,现在在这20*500个数中找出排名前500的数思路:可以先选出20个数组中最大的数,进行比较,选出其中最大的数,然后再从选出最大的那个数组中选出数放入20个数中比较,每次都重复步骤,直到最终选出500个数,这个复杂度是多少呢?20个数的比较可以用堆,插入一个数lgn,故总的复杂度是500lg20用这个思路写出原创 2013-09-20 18:13:23 · 992 阅读 · 0 评论