C++编程,数据结构,算法类面试题集(2)

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 176 收藏 0 点赞 0 评论 0

31. [Microsoft] 如何高效地用堆栈模拟队列.

使用两个stack, s1和s2

Push时,push到s1

Pop时,若s2非空,则从s2中pop, 若s2为空,则将s1的全部元素pop到s2中,再从s2中pop

分摊复杂度为O(1)

 

32. [Microsoft] 打印中两个整数范围内的所有素数,例如:(12, 15) ->13

1. 单个验证是否为素数

2. 筛法

 

33. [Google] 求直方图的最大内接矩形

    TODO

 

34. [Google] NxN行列有序的矩阵查找一个数

两种方法,1从角上开始search, 2, Divide and Conquer

分治法可以用来解决另外一个问题,在行列有序的二维数组中,大于/小于0的元素有多少个?

35. [Google] MxN的矩阵转秩,要求O(1)的空间复杂度.参考群论中cyclic group,group
generator

TO LEARN

 

36. Inplace perfect shuffle

TO LEARN

 

37. 有一个矩阵A,找出这个矩阵中所有的A(i,j),它所在的行和列都是0.

依次扫描?略。。。

 

38. 有一个变长的characters system, 每个character所占的bytes数不固定。每个
character
的最后一个byte的值是0. 一个字符串由这些变长的characters组成。字符串
的最后两个bytes0. 要求反转这个字符串。额外空间使用越少越好。

先将整个字符串反转,再按个字符反转

 

39. n张扑克牌,从中随机选出几张。要求找出所有的选法,使得所选扑克牌的点数的
和是s. 不用recursion,代码行数越少越好。

TODO 如何不用recursion?

 

40. [Google] 1G内存和4 billion个整数,输出一个不在这些整数内的数, 如果只有10MB内存呢?

1. 1G内存有1024*1024*1024*8个位,扫描一遍记位即可

2. 如果内存不够,可以依次处理10*1024*1024*8个数,需要扫描4*1024/10/8大概50趟

 

41. [Google] Merge Nsorted array

   

42. [Google] 给一个大小为N的数组,输出所有大小为K的子集(K<=N

    TODO

 

43. [Microsoft] 已知 bst 和两个数, 在此范围内的节点数。递归和非递归

中序遍历,加一个collection作为参数即可

 

44. [Microsoft] 已知 bst 和一个数, 找到next larger number, O(logn)时间

    TO CODE

 

45. N*N的正方形内有黑白两色,求四边都是黑色的最大的子正方形

    TO LEARN

 

46. 平面上有一组点集,求穿过点最多的直线

计算两两点够成的直线方程x+By+C=0, 找出出现次数最多的方程即可

 

47. 实现itoa

 

48. 给一个2D matrix spiral order打印

   

 

49. [Google] 一个字符串,复制所有的’x’, 再删除所有的’z’, 其它不变

略。。。

 

50. [Google] 实现memcpy(void *src, int size, void *dest);
判断参数合法性,判断src,dest是否相等 是否 overlapping 时会出错,

    注意memcpymemmove的区别

 

51. [Google] 大小为N数组,给出一个大小为K的随机子集

作一个shuffle,然后选取前K个(因此shuffle时只要进行到第K个即可)

 

52. [Microsoft]判断这四个点是不是构成了一个矩形

    TODO

 

53. 实现 char* strtok(char* str, const char* delimeter)

略。。。应该需要用到static变量

 

54. 美国的coin设计为151025,任意给定一个change,用greedy algorithm可以算出最少所需要的coins,如何判断一组coin是否可以用greedy algorithm?

TO LEARN

找硬币的DP程序:

 

55. 给定5张牌,写一个函数判断是否有两对

略。。。

56. BST中删除一个节点

   

 

57. [Microsoft] 给你一个地址/a/b/../c/./d.txt, 让你把它normalize

    58. [Microsoft] 给出一个BST和一个值,求所有和等于这个值的Path.

    59. [Microsoft] 按层打印树

   

 

60. [Google] 五个非常大的数组求交集(考虑时间,空间,I/O

   

评论列表
文章目录