📣 独立日限时特惠: VIP通行证立减$68
楼主: joseph1992
跳转到指定楼层
上一主题 下一主题
收起左侧

空气床跪经

🔗
 楼主| joseph1992 2019-3-30 09:40:59 | 只看该作者
全局:
松鼠山 发表于 2019-3-29 14:45
**** 本内容被作者隐藏 ****

我其实被考了两次guess number, 第二轮也打算考我guess number, 但我说上一轮面过了。所以面试官才换成打印倒水那道。
我用的就是你说的那个worst case17次的,但是不是最优我不知道,但面试官认可了

评分

参与人数 2大米 +4 收起 理由
xiaohuolong + 2 很有用的信息!
松鼠山 + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
请问楼主 能发下你提到的猜数字优化算法的那个面经帖子吗?跪求 非常感谢!
回复

使用道具 举报

🔗
松鼠山 2019-4-2 13:58:14 | 只看该作者
全局:
joseph1992 发表于 2019-3-29 17:40
我其实被考了两次guess number, 第二轮也打算考我guess number, 但我说上一轮面过了。所以面试官才换成打 ...

好奇问一下 这道guess number是以socket programming的形式考的吗?等于一次性考两题了?
不然就常规的写个guess number函数的话 怎么用得掉一轮45min啊   多谢解答  再给您加点分
回复

使用道具 举报

🔗
 楼主| joseph1992 2019-4-3 06:43:41 | 只看该作者
全局:
松鼠山 发表于 2019-4-2 13:58
好奇问一下 这道guess number是以socket programming的形式考的吗?等于一次性考两题了?
不然就常规的 ...

客气了,就是用socket programming啊,但是这个算法如果之前写过的话肯定用不了45分钟. 估计他们是给那些没写过的人准备的时间吧,这个算法其实不太好想吧.
回复

使用道具 举报

🔗
 楼主| joseph1992 2019-4-3 06:44:53 | 只看该作者
全局:
neverlandzzy 发表于 2019-3-31 09:29
请问楼主 能发下你提到的猜数字优化算法的那个面经帖子吗?跪求 非常感谢!

就叫深秋版,你免米搜一下就有了
回复

使用道具 举报

🔗
xiaohuolong 2019-4-4 13:28:59 | 只看该作者
全局:
请问倒水这题怎么打印出来
回复

使用道具 举报

🔗
 楼主| joseph1992 2019-4-5 06:03:43 | 只看该作者
全局:
xiaohuolong 发表于 2019-4-4 13:28
请问倒水这题怎么打印出来

有点难描述,我把我代码发上来了,是不是bug-free不敢保证,当时也是debug了好久才弄成这样的.

  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 PrintMountain pm = new PrintMountain();
  4.                 //pm.print(new int[] {5,4,2,1,2,3,2,1,0,1,2,3,4});
  5.                 pm.dumpWater(new int[] {5,4,2,1,2,3,2,1,0,1,2,3,4}, 1, 8);
  6.         }
  7.        
  8.        
  9.         public void print(int[] heights) {
  10.                 int maxHeight = 0;
  11.                 for (int h : heights) {
  12.                         maxHeight = Math.max(h, maxHeight);
  13.                 }
  14.                 for (; maxHeight >= 0; maxHeight--) {
  15.                         StringBuilder line = new StringBuilder();
  16.                         for (int i = 0; i < heights.length; i++) {
  17.                                 if (heights[i] >= maxHeight) {
  18.                                         line.append("+");
  19.                                 } else {
  20.                                         line.append(" ");
  21.                                 }
  22.                         }
  23.                         System.out.println(line.toString());
  24.                 }
  25.         }
  26.        
  27.         public void dumpWater(int[] heights, int dropLocation, int waterAmount) {
  28.                 int[] originalHeights = new int[heights.length];
  29.                 for (int i = 0; i < heights.length; i++) {
  30.                         originalHeights[i] = heights[i];
  31.                 }
  32.                 int maxHeight = 0;
  33.                 for (int h : heights) {
  34.                         maxHeight = Math.max(h, maxHeight);
  35.                 }
  36.                 while (waterAmount > 0) {
  37.                         // find lowest index from left
  38.                         int dropIndexLeft = dropLocation;
  39.                         int dropIndexRight = dropLocation;
  40.                         for (int i = dropLocation; i > 0; i--) {
  41.                                 if (heights[i - 1] <= heights[i]) {
  42.                                         dropIndexLeft = i - 1;
  43.                                 } else {
  44.                                         break;
  45.                                 }
  46.                         }
  47.                         for (int i = dropLocation; i < heights.length - 1; i++) {
  48.                                 if (heights[i + 1] <= heights[i]) {
  49.                                         dropIndexRight = i + 1;
  50.                                 } else {
  51.                                         break;
  52.                                 }
  53.                         }
  54.                         int dropIndex = heights[dropIndexLeft] < heights[dropIndexRight] ? dropIndexLeft : dropIndexRight;
  55.                         heights[dropIndex]++;
  56.                         waterAmount--;
  57.                 }
  58.                 int newMaxHeight = 0;
  59.                 for (int h : heights) {
  60.                         newMaxHeight = Math.max(h, newMaxHeight);
  61.                 }
  62.                 for (; newMaxHeight >= 0; newMaxHeight--) {
  63.                         StringBuilder line = new StringBuilder();
  64.                         for (int i = 0; i < heights.length; i++) {
  65.                                 if (heights[i] >= newMaxHeight && heights[i] > originalHeights[i]) {
  66.                                         line.append('w');
  67.                                         heights[i]--;
  68.                                 } else if (originalHeights[i] >= newMaxHeight) {
  69.                                         line.append("+");
  70.                                 } else {
  71.                                         line.append(" ");
  72.                                 }
  73.                         }
  74.                         System.out.println(line.toString());
  75.                 }
  76.                
  77.                 //print(heights);
  78.         }
复制代码

补充内容 (2019-4-5 06:05):
printMountain是个warm up, 打印的是没有水的情况,follow up是写dumpWater这个功能,卡了很久怎么显示w

评分

参与人数 1大米 +2 收起 理由
xiaohuolong + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| joseph1992 2019-4-5 06:08:33 | 只看该作者
全局:
xiaohuolong 发表于 2019-4-4 13:28
请问倒水这题怎么打印出来

如果你是问output是什么的话,output就像是leetcode 原题里的那张图一样,深秋版里有解释
回复

使用道具 举报

🔗
Airbnb2019 2019-4-8 12:59:10 | 只看该作者
全局:
楼主 给您加米了,能否把您写过的guess number也贴一下 谢谢
回复

使用道具 举报

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

本版积分规则

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