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

Google 电面 挂

🔗
ND0406 2022-7-11 13:00:48 来自APP | 只看该作者
全局:
5222464 发表于 2022-07-10 20:53:55
------------------------------
实战例子
(()))(()(()
哈哈哈哈 对哦 那改一下 case

)(((
这类的 按照全部(处理一下 flip+删除
回复

使用道具 举报

🔗
Falldawn 2022-7-11 23:58:45 | 只看该作者
全局:
ND0406 发表于 2022-7-10 22:00
哈哈哈哈 对哦 那改一下 case

)(((

所以按照我写的逻辑,左右2个删掉,最后flip一个,共3步
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

🔗
acheirs 2022-7-12 05:52:53 | 只看该作者
全局:
这题和Pramp上那个括号题很像, stack 是正常思路,可以用,但是其实应该不需要 stack来浪费这个O(N)的空间。直接result = 0, “(” 就  + 1, “)”就 - 1,主要思路差不多这路数,细节可以再去扣。
回复

使用道具 举报

🔗
Falldawn 2022-7-12 07:32:32 | 只看该作者
全局:
本帖最后由 Falldawn 于 2022-7-11 16:38 编辑

输出最小步数得到的String,但是如果包涵其他字符则需要在else 上加上if
else if (c == ')' ){

else if( c == '('){
  1. public String minToMakeValid(String S) {
  2.         int n = S.length();
  3.         int[] change = new int[n];
  4.         int openRight = 0, openLeft = 0;
  5.         char[] input = S.toCharArray();
  6.         int lastOpenRight = 0;
  7.         int firstOpenLeft = 0;
  8.         for (int i = 0; i < n; i++) {
  9.             char c = input[i];
  10.             if (c == '(') {
  11.                 openLeft++;
  12.             }else {
  13.                 openLeft--;
  14.             }
  15.             if (openLeft < 0) {
  16.                 openLeft = 0;
  17.                 openRight++;
  18.                 if (openRight % 2 == 1) {
  19.                     change[i] = 1; // change to "(
  20.                 }
  21.                 lastOpenRight = i;
  22.             }
  23.         }
  24.         if (openRight % 2 != 0) {
  25.             change[lastOpenRight] = 2; // mark for delete
  26.         }
  27.         int minSteps = openLeft / 2 + openRight /2 + (openLeft % 2 == 0 ? 0 : 1) + (openRight % 2 == 0 ? 0 : 1);
  28.         openLeft = openRight = 0;
  29.         for (int i = n - 1; i >= 0; i--) {
  30.             char c = input[i];
  31.             if (c == ')') {
  32.                 openRight++;
  33.             }else {
  34.                 openRight--;
  35.             }
  36.             if (openRight < 0) {
  37.                 openRight = 0;
  38.                 openLeft++;
  39.                 if (openLeft % 2 == 1) {
  40.                     change[i] = -1; // change to ")
  41.                 }
  42.                 firstOpenLeft = i;
  43.             }
  44.         }
  45.         if (openLeft% 2 != 0) {
  46.             change[firstOpenLeft] = 2; // mark for delete
  47.         }

  48.         StringBuilder res = new StringBuilder();
  49.         for(int i = 0,j = 0, k = 0; i < n; i++) {
  50.             if (change[i] == 0) {
  51.                 res.append(S.charAt(i));
  52.             }else if (change[i] == 1 ) {
  53.                 res.append("(");
  54.             } else if (change[i] == -1){
  55.                 res.append(")");
  56.             }
  57.         }
  58.         return res.toString();
  59.     }
复制代码

评分

参与人数 2大米 +2 收起 理由
tanhao940807 + 1 很有用的信息!
大宝不发脾气 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
neverlate 2022-7-12 13:25:18 | 只看该作者
全局:
已米,请问下delete add 和flip都算一次操作吗?还是flip算2次操作?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-DGEAG  2022-7-13 02:51:22
neverlate 发表于 2022-7-11 23:25
已米,请问下delete add 和flip都算一次操作吗?还是flip算2次操作?

算一次,最后要返回valid结果
回复

使用道具 举报

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

本版积分规则

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