微软较难得面试算法题4-13(几道题都比较新以及难)

 

一面:

自我介绍+算法题

简短的介绍了一下项目背景,面试官也没咋详细问,接着就是一道算法题

算法题二维平面上有若干个点,求出所有欧氏距离和曼哈顿距离相等的节点对数。(面试官有解释什么是欧氏距离和曼哈顿距离)

强调若干个节点可能有重复的情况,但是可以先想想节点不重复情况的算法

我最终只答出了不重复情况下的(就是找横坐标相同的节点对和纵坐标相同的节点对求和呜呜太菜了),然后写好了代码,面试官提醒我代码有可以改进的地方,然后又改了改。。。(过程非常紧张,感觉脑子停止了运作,一个简单的东西改了好久)后面面试官一直引导我思考节点重复情况的,可是根本想不出来,气氛一度非常尴尬,最后时间来不及了,面试官让我回头再想想。面试结束

我以为一面估计是凉凉,感觉自己在coding方面太菜了不敢再经历第二次一面,没想到后来给我发邮件通知的是二面,欣喜若狂

 

二面:

英文!自我介绍+两道算法

幸好我早有准备,否则临场英文还真不知该咋发挥,建议面微软的uu们都准备个英文自我介绍还有项目介绍,很多面试官都要求这个。

介绍完了就开始写代码:

1、二叉树的最近公共祖先(Lc原题)

我用递归做的,问了时间复杂度,以及优化方案,优化方案没想出来,依旧是引导,告诉我可以在终止条件做文章,或者加全局变量。。。依旧是啥也想不出来(太菜

2、非负数组求和能被3整除的最大子序列(可以不连续)

我用取余做的,说了下思路就到点了,按照惯例问了面试官几个问题。

 

总体感觉,微软比其他所有公司都看重算法能力,也不仅仅是能解出来,最好还要在复杂度上达到最优,对于项目经历啥的并不那么care。
 

一面

 

1、在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。
直观想法是用两个数组a、b。a[i]、b[i]分别保存从前到i的最大的数和从后到i的最小的数,

一个解答:这需要两次遍历,然后再遍历一次原数组,
将所有data[i]>=a[i-1]&&data[i]<=b[i]的data[i]找出即可。

给出这个解答后,面试官有要求只能用一个辅助数组,且要求少遍历一次。

//百度别人的解题经验 居然提问过程和解题过程都和我一模一样😓

 

二面

1483. 树节点的第 K 个祖先

这道题我一开始用最白痴的方法 然后被要求优化  提示了蛮多的 我还是不会

116. 填充每个节点的下一个右侧节点指针

我写的bfs 然后被说空间复杂度很大 要用bfs

我看了leetcode这题是完美二叉树 我不记得面试官有没有说是完美二叉树了 如果是的话 那是我想得太复杂了😓

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值