秋招总结:遇到的手撕代码题

2020年秋招总结:遇到的手撕代码题

跟谁学

一面:求连续子数组的最大和(力扣 53)

【思路:力扣系列略,题解区都比我讲得好】

二面:翻转字符串中的每个单词(简单题,比较常见,没去找对应的原题)

【思路:遍历字符串,每找到一个单词就把它翻转一下,空格跳过】

字节

x面:不使用除法实现除自身外数组元素的乘积(力扣 238)

【思路:力扣系列略,题解区都比我讲得好】

x面:实现NMS

【思路:略,目标检测的相关基础】

一面:k个一组翻转链表(力扣 25)

【思路:力扣系列略,题解区都比我讲得好】

拼多多

一面:给n个标签和位置的pair,位置表示标签在数轴上的位置,问最少移动多少个点可以使标签升序排列?比如(3, 1.0), (2, 2.0), (1, 1.5),输出为1。

【思路:首先根据位置升序排列,得到标签在数轴上的实际顺序(如示例中标签在数轴上的顺序为3,1,2),最少移动多少个点可以先算最多有多少个点不需要移动。那么哪些点不需要移动呢?可以看做是一个最长非递减子序列问题。假设最长非递减子序列长度是k,数组长度是n,那么答案就是n-k】

网易

一面:求二叉树的最长路径

【思路:遍历二叉树求左右子树深度,过程中更新左右子树深度和的最大值】

二面:给定n个点表示单连通n边形(可凸可凹),以及一个点P,判断点P与n边形的位置关系(在n边形内or外)

【思路:gg,请度娘上班吧。。】

Shopee

一面:

(1)很长的题目,实际是求树的每层最大值

【思路:树的层次遍历】

(2)有四个数组A,B,C和D,求满足A[i]+B[j]+C[k]-D[l]=0的组合个数。要求用尽量低的时间复杂度

【思路:先用哈希表记录D-C的值以及出现次数;然后两层循环遍历数组A和B,累加哈希表中A[i]+B[j]对应的出现次数。两步的时间复杂度都是O(n2),总的时间复杂度为O(n2)】

华为

一面:小明喜欢喝瓶装牛奶,今日超市有优惠活动,牛奶5元1瓶,每2个瓶盖外加1元可以换1瓶,如果小明在不赊账不借别人瓶盖的情况下,想喝N瓶牛奶,至少要花多少元钱?

【思路:不全额购买新瓶的情况下,x瓶最多可以换购x-1瓶牛奶。所以x+x-1=N,可得x=(N+2)/2,最少需要花的钱数为x*5+(x-1),代入x的值即可】

二面:

给定1个字符串,最多50个字符以内,

a. 先倒序,例如:A2m -> m2A

b. 再分别统计出现的AZ字符的次数:当出现3次及以上的A时,就把字符串中的所有A都删除,其他BZ也是一样要求。

c. 例如:AABBABC1C2C3ABababab -> bababa321。

题目追问:如果要求出现连续三次或三次以上字符的情况下删除字符串中的所有该字符,应该怎么做?

【思路:原始题目的情况下,先遍历字符串记录各个大写字母的出现次数,第二次遍历字符串将非大写字母和大写字母中出现次数少于3的字符加入结果。进阶:删除重复字符后可能有前后相同字符连接,再次满足删除条件,且删除的要求是字符串中所有的该字符,所以需要递归操作】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值