前言:两天前参加阿里游戏的面试,一面时出了一道面试题。那时我看楞了,好像没做过这种题型,看起来很容易又很难。很容易是,使用O(N^2)就可以解决,难得是,优化时间复杂度。


题目:字符串删除字符(字符可能会有重复,要一起删掉)

思路一(反正面试我没这么写,你们随便看看)

一开始看到题目,思路就遍历字符串,一个个字符比较,然后删除它。
(1) 遍历数组,找到目标字符;
(2) 移动目标字符后面的所有字符,各向前移动复制1位;
(3) 删除最后一位字符(或标识它不可用);
(4) 重复(1)直至循环结束。

优点(当然有):容易想出来,代码逻辑简单;
缺点:时间复杂度O(N^2)。

    public static String deleteChar(String str, char c){if (str == null || "".equals(str)) return str;int len = str.length();char[] ca = str.toCharArray();for (int i = 0; i < len; i++){while (len != 0 && ca[i] == c){len--;if(len!= i){for (int j = i; j < len; j++){ca[j] = ca[j + 1];}}else{break;}}}if (len == str.length()) return str;// java被迫无奈~return new String(ca,0, len);}

思路二(逗比的我的现场解法)

有没有办法一次性将所有字符集合在一起,然后一起删除掉呢?有没有很熟悉呢?快速排序?没错就是它!我们在实现快速排序时用到的关键方法partition的思路!里面比较大和小,我们这里换成比较相等于不想等就Ok啦!对不对!?

优点:时间复杂度:O(N);
缺点:字符串乱序。

这里的代码我就不写出来了,需要的话,参考快速排序代码。


思路三(机智的我开窍改回来了)

增强版的partition。同样的思路来自于快速排序算法,经典的快速排序算法对付很多重复数的数组效率低,有人发明了改进这一效率的partition。思路是使用三个指针,第一个指针相当于经典快排的第一个指针,后面两个指针相当于经典快排的最后一个指针,只是两个指针间的数都是相等重复的数。

优点:克服和思路二的缺点,又具有思路二的优点。

    public static String deleteChar(String str, char c){if (str == null || "".equals(str)) return str;int i = 0;int j = 0;int len = str.length();for (; i < len && str.charAt(i) != c; i++);if (i == len) return str;// 下面是重点char[] ca = str.toCharArray();j = i;while (j < len){while (j < len && ca[j] == c){j++;}if (j >= len) break;// 交换exch(ca, i++, j);}// java被迫无奈~return new String(ca,0,i);}

[面经]阿里游戏一面的算法题相关推荐

  1. 一看“左程云:200道算法与数据结构”,二刷“阿里云:70+算法题、30种大厂笔试高频知识点”,3月过去终于挺进我梦中的字节!

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

  2. 阿里笔试的一道算法题

    题目:获取一个正整数数组的最优跳动方式,要求如下: 1)从数组中间的任意位置开始向右跳,每次跳动的步伐数不能超过该位置对应元素的值 2)在跳动次数最少的情况下计算每次跳动的步伐 以下是实现,采用jav ...

  3. 阿里游戏市场分析师模拟题

    一道问答题: 谈谈关于手游市场的理解,从几个方面来谈: 市场大盘的表现 市场类型的分布 未来发展的趋势 用户群体的变化

  4. 阿里、华为、美团,大厂面试算法题,这些你会吗?

    名师 带你刷爆LeetCode 算法知识 讲解+训练 免费0元报名参加 在讲到 AI 算法工程师时,大部分同学关注点都在高大上的模型,一线优秀的项目.但大家往往忽略了一点,人工智能的模型.项目最终还是 ...

  5. 分享两道阿里P7究极难度算法题,满满干货指导

    缘起 深圳市腾讯计算机系统有限公司成立于1998年11月,是中国最大的互联网综合服务提供商之一,也是中国服务用户最多的互联网企业之一. 腾讯业务多元化,覆盖面广:社交.通信.娱乐全面开花.其中,腾讯Q ...

  6. 中软国际Java机试,阿里Java算法题

    拼多多三面惨败,java中间件.数据库与spring框架,答不上- 面试开火箭,工作拧螺丝-月初有个朋友面试拼多多,一面自信满满过了,结果三面却惨败-昨天朋友约我出来讨论问题在哪里,三面就答不上了(卡 ...

  7. 【游戏开发面经】我在阿里HRG面这关跪掉了,游戏客户端开发岗,总结一下(阿里 | 游戏 | 凉面面经)

    文章目录 一.前言 二.流程 1.简历 2.一面,技术面 2.1.技术题 2.2.常规题 2.3.面试结果 3.二面,技术面 3.1.技术题 3.2.常规题 3.3.面试结果 4.三面,HRG面 4. ...

  8. 保研面试 算法题_GitHub - 13538899384/AlgorithmTest: 春招秋招笔试题目汇集

    秋招总结(Android开发工程师) 前言 从春招过渡秋招,连续半年时间都是努力奔波在求职路上,找工作确实非常累,无论是生理上还是心理上,记得我有次从广州跑过去深圳面完百度,接着面蘑菇街,再接着参加深 ...

  9. 【游戏开发面经1】游戏客户端开发岗(阿里 | 游戏 | 凉面面经)

    转载自[林新发]  本文只是用来分享,如有不妥,请联系删除. 文章目录 一.前言 二.流程 1.简历 2.一面,技术面 2.1.技术题 2.2.常规题 2.3.面试结果 3.二面,技术面 3.1.技术 ...

最新文章

  1. 微信继续加持上班摸鱼功能!网友:离被开除更进一步...
  2. 案例驱动python编程入门-用Python进行行为驱动开发的入门教程
  3. 62. Search in Rotated Sorted Array【medium】
  4. git revert 的问题
  5. IT人员健康信号之舌苔
  6. 【图论】【Floyed】舞会邀请(CODE[VS] 2604)
  7. SIT与UAT的分别
  8. flash builder4.7 for Mac升级AIRSDK详解
  9. 通过shell发送邮件
  10. (191)FPGA上电后IO的默认状态(Vivado软件默认为0)
  11. 台式计算机 一万元,一万元左右i7-8700K/Z370/GTX1070Ti水冷游戏台式电脑主机配置推荐(2)...
  12. trace (矩阵的迹) 的性质
  13. linux锐捷代码_锐捷认证 For Linux
  14. FolderSync文件夹同步
  15. nmon监控工具使用(打开nmon文件出现  运行时错误13类型不匹配)
  16. 10 个最佳 WordPress 幻灯片插件
  17. 升级bigsur_2年内彻底摆脱英特尔,苹果重磅发布自研Mac芯片,并对“五大系统”再升级...
  18. html做特效,html特效代码大全
  19. 微信公众平台开发之签到积分查询功能
  20. 【Cocos Creator实战教程(3)】——TiledMap(瓦片地图)组件

热门文章

  1. 边境城市无线应急广播系统方案设计概要
  2. Python 递归函数返回值为 None 的解决办法
  3. html内敛样式background,js获取内联样式的方法
  4. java-面向对象编程-三大特性之封装
  5. 第三讲:股票买卖 III
  6. QA:通信同步技术-锁相环原理
  7. 赋予人工智能记忆的人,带你梳理深度学习核心算法
  8. android手机如何到导出电话号码,手机通讯录怎么导入到新手机?三种方法,快速迁移!...
  9. Java使用hotmail的SMTP服务器转发邮件出错
  10. process lasso 优化原理