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