查看: 1471|回复: 11
收起左侧

无波店面+避坑指南

|只看干货
匿名用户-79D  发表于 2022-1-29 08:39:47 |阅读模式
本楼: 👍   100% (1)
 
 
0% (0)   👎

2022(1-3月) 码农类General 硕士 全职@Uber - 内推 - 技术电面  | 😐 Neutral 😐 AverageOther | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
先上来10分钟自我介绍,chat项目,然后邻国面试官说我们接下来用45分钟coding。非莉蔻题,至少我没刷过。
您好!
本帖隐藏的内容需要积分高于 180 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 180 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式


慌的一p...不知道能不能过,share一下避坑指南,求点人品,希望能被高抬一手.....lesson learned:不要在心理上过度依赖面筋

评分

参与人数 4大米 +10 收起 理由
zhangbaoquan + 1 给你点个赞!
清道神君 + 7
easyham + 1 给你点个赞!
umd2011 + 1 给你点个赞!

查看全部评分


上一篇:打车公司 店面
下一篇:招工网店面
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (2)
 
 
0% (0)    👎
感谢lz,我大概写了下,输出应该是对的。
  1. public List<Integer> findJumpingNumbers(int upperBound) {
  2.     List<Integer> result = new LinkedList<>();
  3.     if (upperBound < 0) {
  4.         return result;
  5.     }

  6.     result.add(0);
  7.     for (int num = 1; num < 10; num++) {
  8.         bfs(new LinkedList<>(Collections.singletonList(num)), upperBound, result);
  9.     }

  10.     return result;
  11. }

  12. private void bfs(Queue<Integer> queue, int upperBound, List<Integer> result) {
  13.     while (!queue.isEmpty()) {
  14.         int num = queue.poll();
  15.         result.add(num);

  16.         int lastDigit = num % 10;
  17.         if (lastDigit == 0) {
  18.             handle(num * 10 + 1, upperBound, queue);
  19.         } else if (lastDigit == 9) {
  20.             handle(num * 10 + 8, upperBound, queue);
  21.         } else {
  22.             handle(num * 10 + lastDigit - 1, upperBound, queue);
  23.             handle(num * 10 + lastDigit + 1, upperBound, queue);
  24.         }
  25.     }
  26. }

  27. private void handle(int num, int upperBound, Queue<Integer> queue) {
  28.     if (num <= upperBound) {
  29.         queue.offer(num);
  30.     }
  31. }
复制代码
另外我觉得需要向面试官确认这个bound的范围,如果接近intger的max的话,就得用long来处理中间数字了,code很容易改。

评分

参与人数 2大米 +4 收起 理由
清道神君 + 3
easyham + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

地里的匿名用户
匿名用户-7B6  发表于 2022-1-30 01:50:13
本楼: 👍   100% (1)
 
 
0% (0)   👎
完了,中文也不能理解。。。
回复

使用道具 举报

地里的匿名用户
匿名用户-C82  发表于 2022-2-2 20:29:01
本楼: 👍   0% (0)
 
 
0% (0)   👎
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (33)
 
 
2% (1)    👎
本帖最后由 zinechant 于 2022-2-2 13:36 编辑

这个....把结果存下来再sort一下呗?
哦 我发现没看清楚题目。
这是什么垃圾输出顺序?题目也没有写明白。

回复

使用道具 举报

地里的匿名用户
匿名用户-79D  发表于 2022-2-3 06:09:14
本楼: 👍   0% (0)
 
 
0% (0)   👎
匿名者 发表于 2022-2-2 04:29
https://leetcode.com/discuss/interview-question/360770/uber-onsite-jumping-numbers

应该是这个

对的,定义就是这个,但这个例子给的输出顺序是不对的。test case要求的输出顺序对于这个101的input 来讲应该是[0, 1, 10, 12, 101, 2, 21, 23, 3, 32, 34, 4, 43, 45, 5, 54, 56, 6, 65, 67, 7, 76, 78, 8, 87, 89, 9, 98], 也就是说对于0到9,每一个数字做bfs,先输出2位数然后3位数...
所以我说这个题是个坑,他题目里只给了一个两位数的例子,所以以101为例子,我并不知道应该先输出12 还是先输出101,直到看完了failed test cases才发现这个问题。
当然我不排除他们有类似的题但要求不同的输出顺序,比如这个link里的输出顺序,其实也能做,无非就是把所有single digit的数字加到queue里然后做bfs。所以得看清楚或者问清楚....
回复

使用道具 举报

地里的匿名用户
匿名用户-79D  发表于 2022-2-3 06:10:52
本楼: 👍   0% (0)
 
 
0% (0)   👎
zinechant 发表于 2022-2-2 11:27
这个....把结果存下来再sort一下呗?
哦 我发现没看清楚题目。
这是什么垃圾输出顺序?题目也没有写明白 ...

我又解释了一下这个输出顺序,参见楼上
回复

使用道具 举报

地里的匿名用户
匿名用户-79D  发表于 2022-2-7 07:02:08
本楼: 👍   0% (0)
 
 
0% (0)   👎
yes_minister 发表于 2022-2-5 00:31
感谢lz,我大概写了下,输出应该是对的。另外我觉得需要向面试官确认这个bound的范围,如果接近intger的max ...

对的,就是这么个思路
回复

使用道具 举报

地里的匿名用户
匿名用户-79D  发表于 2022-2-10 03:11:42
本楼: 👍   0% (0)
 
 
0% (0)   👎
update. 店面过了。 估计能过test case是基础吧
回复

使用道具 举报

地里的匿名用户
匿名用户-229  发表于 2022-2-21 06:58:10
本楼: 👍   0% (0)
 
 
0% (0)   👎
写了一下 DFS 貌似也可以的
  1.     public static void main(String[] args) {
  2.         JumpNumber test = new JumpNumber();
  3.         List<Integer> result = test.getNum(30);
  4.         System.out.println(result);
  5.     }

  6.     public List<Integer> getNum(int limit) {
  7.         List<Integer> list = new ArrayList<>();
  8.         for (int i = 0; i < 10; i++) {
  9.             dfs(list, i, limit);
  10.         }
  11.         return list;
  12.     }

  13.     private void dfs(List<Integer> result, int n, int limit) {
  14.         if (n > limit) {
  15.             return;
  16.         }
  17.         result.add(n);
  18.         if (n == 0) {
  19.             return;
  20.         }

  21.         int end = n % 10;
  22.         if (end > 0) {
  23.             dfs(result, n * 10 + end - 1, limit);
  24.         }
  25.         if (end < 9) {
  26.             dfs(result, n * 10 + end + 1, limit);
  27.         }
  28.     }
复制代码
回复

使用道具 举报

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

本版积分规则

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