楼主: zjt610526
跳转到指定楼层
上一主题 下一主题
收起左侧

FB一面面经

🔗
Sidney_L 2018-11-7 14:44:16 | 只看该作者
全局:
模拟stack的方式, 两个指针从两头同时向中间走, 一个变量计数左边的open parenthesis, 一个记录右边的close parenthesis, 左边碰到open ++, close --, 0的时候碰到close就是非法,改为点, 右边往左走同理, close++, open--, 最后左指针>=右指针的时候停止。
回复

使用道具 举报

🔗
shuxiong 2018-11-7 15:04:54 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
Sidney_L 2018-11-7 15:12:57 | 只看该作者
全局:
shuxiong 发表于 2018-11-7 15:04
指针有加有减 不一定extractly one pass呀

我也想到差不多的方法,不好证明就是one pass

加减的是计数变量,不是指针,这里的指针其实是数组下标,每次都往中间前进一步
回复

使用道具 举报

全局:
请问楼主有消息了吗?
回复

使用道具 举报

🔗
 楼主| zjt610526 2018-11-7 21:48:37 | 只看该作者
全局:
Moyimoyi 发表于 2018-11-7 18:07
请问楼主有消息了吗?

木有。紫薯紫薯
回复

使用道具 举报

🔗
YaxiLi 2018-11-7 22:54:09 | 只看该作者
全局:
我上周面的第一题也是单调数组,我都过了一周了还没消息。。。
回复

使用道具 举报

🔗
 楼主| zjt610526 2018-11-7 23:18:57 | 只看该作者
全局:
YaxiLi 发表于 2018-11-7 22:54
我上周面的第一题也是单调数组,我都过了一周了还没消息。。。

随缘随缘
回复

使用道具 举报

全局:
Sidney_L 发表于 2018-11-7 14:44
模拟stack的方式, 两个指针从两头同时向中间走, 一个变量计数左边的open parenthesis, 一个记录右边的clo ...

感觉这种方法对于 ()()())这种情况还是不行?
回复

使用道具 举报

🔗
木易wen 2018-11-8 11:21:17 | 只看该作者
全局:
可以用两个flag left和right,当left遇到左括号加一右括号减一,right相反 小于0时为invalid变成点
好像和刷题网二三吧有点像
  1. public static String removeInvalidParentheses(String input) {
  2.         char[] inputChars = input.toCharArray();
  3.         int len = inputChars.length;
  4.         int left = 0;
  5.         int right = 0;
  6.         for (int i = 0; i < len; i ++) {
  7.             if (Character.isLetter(inputChars[i])) {
  8.                 continue;
  9.             }
  10.             if (inputChars[i] == '(') {
  11.                 left ++;
  12.             }
  13.             else if (inputChars[i] == ')') {
  14.                 left --;
  15.             }
  16.             if (left < 0) {
  17.                 inputChars[i] = '.';
  18.                 left = 0;
  19.             }
  20.             if (inputChars[len - i - 1] == ')') {
  21.                 right ++;
  22.             }
  23.             else if (inputChars[len - i - 1] == '(') {
  24.                 right --;
  25.             }
  26.             if (right < 0) {
  27.                 inputChars[len - i - 1] = '.';
  28.                 right = 0;
  29.             }
  30.         }
  31.         return new String(inputChars);
  32.     }
复制代码
回复

使用道具 举报

🔗
Sidney_L 2018-11-8 15:02:14 | 只看该作者
全局:
子怡怡起床了 发表于 2018-11-8 02:58
感觉这种方法对于 ()()())这种情况还是不行?

确实,脑子一热就觉得可行了,现在觉得one pass确实不知如何实现。。。
回复

使用道具 举报

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

本版积分规则

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