🎁 Offer多多申请季白金卡十一特惠52% off! 🎁 点击查看详情
123
返回列表 发新帖
楼主: regrx
收起左侧

狗狗 early career VO 面经

|只看干货
 楼主| regrx 2022-7-5 01:20:51 | 显示全部楼层 | 🔍试试Job多多
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
Falldawn 发表于 2022-7-1 22:09
请问能不能回帖重新发一次,真的看不懂

已经重发了
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (936)
 
 
6% (70)    👎

非常感谢,多谢啦
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (936)
 
 
6% (70)    👎
第一题给的swimmer array?free style太简单了吧,直接heap按照free100排序
mixed确实可以backtrack,取最小值,记录运动员
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (936)
 
 
6% (70)    👎
本帖最后由 Falldawn 于 2022-7-5 11:08 编辑
regrx 发表于 2022-6-23 18:48
是的,就是那么简单的题。我用的是排序+遍历,hashset也可以

请问第二题require the minor data movement.什么意思
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (936)
 
 
6% (70)    👎
最后一题是1048变形,还可以用dp方法做啊,排序后把长度为1 的放进Map中,后面更新的时候只有减少1位字符后在map中能发现且会增大时才更新
  1. public String longestStrChain(String[] words) {
  2.         Map<String, Integer> dp = new HashMap<>();
  3.         Arrays.sort(words, (a, b) -> Integer.compare(a.length(), b.length()));
  4.         String res = words[0];
  5.         int max = 0;
  6.         for (String word : words) {
  7.             if (word.length() == 1) {
  8.                 dp.put(word, 1);
  9.                 continue;
  10.             }
  11.             int best = 0;
  12.             for (int i = 0; i < word.length(); ++i) {
  13.                 StringBuilder sb = new StringBuilder(word);
  14.                 String prev = sb.deleteCharAt(i).toString();
  15.                 int prevLen = dp.getOrDefault(prev, 0);
  16.                 if (prevLen == 0) {
  17.                     continue;
  18.                 }
  19.                 if (prevLen + 1 > best) {
  20.                     best = prevLen + 1;
  21.                 }
  22.             }
  23.             dp.put(word, best);
  24.             if (best >  max) {
  25.                 max = best;
  26.                 res = word;
  27.             }
  28.         }
  29.         return res;
  30.     }
复制代码
回复

使用道具 举报

 楼主| regrx 2022-7-6 07:39:31 | 显示全部楼层 | 🔍试试Job多多
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
Falldawn 发表于 2022-7-5 13:23
请问第二题require the minor data movement.什么意思

这题一开始的要求是在原数组上操作,且尽可能少的移动和删除。
后面的follow up主要在问关于arraylist的底层实现相关的东西,问在有内存限制时有没有优化的方案等等
回复

使用道具 举报

 楼主| regrx 2022-7-6 07:41:38 | 显示全部楼层 | 🔍试试Job多多
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
Falldawn 发表于 2022-7-5 18:14
最后一题是1048变形,还可以用dp方法做啊,排序后把长度为1 的放进Map中,后面更新的时候只有减少1位字符后 ...

dp的思路和我当时面试的第一感觉很像,建了和map然后排了序,之后就莫名其妙的用了两个set做的,最后发现可以不要map....可能当时思路有点乱,不过结果没啥问题。
回复

使用道具 举报

本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   93% (936)
 
 
6% (70)    👎
regrx 发表于 2022-7-5 16:39
这题一开始的要求是在原数组上操作,且尽可能少的移动和删除。
后面的follow up主要在问关于arraylist的 ...

第一问你怎么解决的

我的想法是,遍历一边后标记需要删除的,然后从右遍历,依次把右边不需要删除的放在左侧被删除的位值
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (94)
 
 
0% (0)    👎
Falldawn 发表于 2022-7-5 20:28
第一问你怎么解决的

我的想法是,遍历一边后标记需要删除的,然后从右遍历,依次把右边不需要删除的放 ...

One pass的话,可以用双指针?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表