
数据结构与算法分析
大马猴儿
人品第一,技术第二
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
冒泡、插入排序的比较
提供一个数组,给数组排序并且获取数组中间值也就是 k=N/2 ,奈何只会两种排序,所以只做了冒泡排序跟插入排序的排序比较原创 2017-05-04 14:14:51 · 230 阅读 · 0 评论 -
约瑟夫问题
今天弄一弄约瑟夫问题。先百度百科一下。 著名犹太历史学家 Josephus ... 总体大意就是 1~41 到了41后从头循环 由1开始报数,数到3则这个数出列,然后由下一个从1开始数 直到剩最后两个数停止 最后这两个数分别是多少? 思路 其实难点就是用程序数数字的时候别数错了。 使用单循环链表就行,对链表进行简单的删除操作。 实现 代码: #i原创 2017-06-02 15:19:16 · 258 阅读 · 0 评论 -
名企笔试:腾讯2016招聘笔试(微信红包)
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,返回0。 测试样例: [1,2,3,2,2],5 返回: 2 思路 首原创 2017-06-01 14:30:10 · 738 阅读 · 0 评论 -
名企笔试:2013 Facebook招聘笔试(查找相同url)
设计算法 给你a、b两个文件,各存放50亿条url,每条url各占用64字节,内存限制是4G,找出a、b文件共同的url 思路 一个文件中能有50亿条的记录也是够可以的。这题整体上不难,只要学过数据结构的基本上都能明白考点在哪里。 首先内存不够,肯定是将这两个大文件分别有序的粉碎成若干个不同的小文件。 每个文件的大小必须小于2G (两个文件比较,所以单个文件不能超过2G)原创 2017-06-16 14:37:10 · 521 阅读 · 0 评论 -
有名的面试题 有一个二维数组(n*n)
有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。 测试样例: 给定一个二位数组arr及题目中的参数n,请返回结果数组。 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4 返回: [4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13] 思路 首先以矩形的方式打印出这原创 2017-06-01 13:40:24 · 1806 阅读 · 0 评论 -
如何验证代码中文件中的括号是否匹配
写一个方法。如何验证代码中文件中的括号(大括号、中括号、小括号) 是否匹配,如果匹配输出0,不然输出1 思路 这是算法招聘中总考的题目,其实也非常的简单,使用出栈入栈平衡即可。 实现 代码如下 #include #include #include #define BOOLEAN char #define TRUE 1 #define FALSE 0 BOOL原创 2017-05-31 17:26:44 · 1099 阅读 · 0 评论 -
简单的hash
提供如下类型的语句 #include filename 它读入文件filename并插入到include语句处。include语句可以嵌套,换句话说,文件filename还可以包含include语句。 但是显然一个文件在任何链接中都不能包含它自己。编写一个程序,使它读入被include语句修饰的一个文件并输出这个文件。 思路 首先先到的就是使用递归原创 2017-05-18 18:09:34 · 438 阅读 · 0 评论 -
只使用处理I/O的PrintDigit函数,编写一个过程以输出任意实数
只使用处理I/O的PrintDigit函数,编写一个过程以输出任意实数 思路 这无非就是打印的时候注意浮点数精度的问题 实现 代码: #include // 按照字符的方式打印宏 #define PrintDigit( Ch ) (putchar( (Ch) + '0' )) void PrintOut(double , int); int main(in原创 2017-05-18 16:05:23 · 4391 阅读 · 0 评论 -
编写一个程序求解字谜游戏问题
题目 编写一个程序求解字谜游戏问题。 思路 借鉴前辈的思路 第一种:对单词表中的每个单词,我们检查每一个有序三元组(行,列,方向),验证是否有单词存在。但坏处是这将导致大量嵌套的for循环。 第二种:对于每一个尚未进行到字谜最后的有序四元组(行,列,方向,字符数)我们可以测试所指的单词是否在单词表中。这也导致使用大量嵌套的for循环。如果在任意单词中的最大字符原创 2017-05-09 13:36:43 · 5913 阅读 · 3 评论 -
直接插入排序
问了问身边的同事,告诉我插入排序还分两种,直接插入排序和拆半插入排序。害的我还把标题改了。回头看看拆半插入排序吧。先弄清楚直接插入排序是怎么回事!原创 2017-05-03 14:22:30 · 197 阅读 · 0 评论 -
关于回文数的求解
回文数是指其各位数字左右对称的整数,如 121, 676, 94249 等,寻找并输出 11 ~ 999 之间的数 m,它满足 m、m平方、m立方均为回文数。思考判断回文数的方法虽然麻烦但是不难,比较简单。如何在程序中简单的完成判断回文数呢?一个数 a = 123456;我只要将它排序颠倒一下 b = 654321,如果 a == b 则是回文数,如果不相等则不是。实现代码:#include &l...原创 2018-03-18 21:37:09 · 854 阅读 · 2 评论