面试题目搜集贴

发几个我最近面试遇到的题目

1. 
两个链表相交,有节点,确定节点【位置】。

2.
一棵二叉树,已知两个节点,确定它们的最近公共父节点。


3.
从鼠标点击开始,一直到窗口处理函数,中间比较详细的流程,要细致到涉及到了哪些API,和消息队列的从属关系,等。
知道多少说多少,我基本忘得差不多了。

4.
有两个数组,长度均为N,且都排好顺序【顺序方向一致,就是都是从小到大,或者都是从大到小】
例如
[1 2 3 4 6]
[0 5 7 8 9]
要找两个里面第N小的数字,这里就是4呗~要求代码~

5.
防止内存泄露的办法,防止栈内存溢出的办法,防止堆内存溢出的办法。

6.
其他的也不是记不住了,只是很难一句两句描述清楚。。。。 。。。。
就当散分了。

 

答案(搜集)

1. 分别计算两条链表长度,记为n1和m1,然后翻转第一个链表,再计算两个链表的长度,记为n2(=n1)和m2。然后根据他们关系,画一下图,可以定位出交点了。
  假设两个链表的公共长度是c,则第一个链表中非公共的长度为n1-c,第二个链表中的非公共长度为n2-c;第一个链表翻转后,现在两条链表的公共长度成了n1-c(请画图来理解),所以此时第二条链表的长度就成了n1-c+n2-c,即n1-c+n2-c=m2,从而算出c。

2. 从根节点开始遍历,A和B分别为已知两节点的值,且A < B:
  node = root;
   
  while(node)
  {
  if(node->data > B)  
  node = node->right;
  else if(node->data < A)
  node = node->left;
  else
  {put node;break;}
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值