前言:笔者转专业学生在美国读研一,平时学习算法主要是通过leetcode,公开课,google等方式。

这次找实习做国内这些笔试的算法编程题,确实发现和平时写的leetcode不一样。有三点要注意

1.要注意输入输出的格式  国内的编程题是纯白板,之前字节跳动是我的第一场笔试,完全没经验,用了很长时间才弄懂国内的平台是怎么处理输入输出的。所以字节笔试直接凉凉,5道才ac一道。

2.leetcode上很多算法的实现的容器大多都是数组这样的容器,有时候不需要你去考虑怎么存储。但是国内的场景编程算法需要你自己考虑如何存储数据。

3.还是要多练习,多亲自去写code。有时候感觉自己好像懂了,实际上代码写出来还是有bug(其实你只懂了八九成)。

然后阿里第一场笔试的时间点上我正在经历部门的二面,所以就没参加上,打算参加27号那场(时间合适)。看了下第一场的题目,感觉还是有难度的,题目的难度大概在leetcode medium和hard之间。

题意

首先定义上升字符串,s[i]≥s[i−1],比如aaa,abc是,acb不是
给n个上升字符串,选择任意个拼起来,问能拼出来的最长上升字符串长度

样例输入 

4

aaa

bcd

bcdef

zzz

样例输出

11

解释:最长字符串是aaabcdefzzz,长度为11

这道题类似leetcode上permutation,subset那种题(DFS深搜+backtrack回溯)实际上最简单的思考也是暴力搜索,考虑的是把每个字符串拼接,存储一个全局变量去保存当前传入字符串的长度最大值。

dfs+backtrack图例

代码如下:

public class Main {/*** 动态保存全部最大值*/private static int maxLength = 0;/*** 旋律,由输入满足每个字符串递增*/private static List<String> melodies;public Main(List<String> melodies){Collections.sort(melodies);this.melodies=melodies;}public static void main(String[]args){Scanner sc = new Scanner(System.in);melodies = new ArrayList<>();int n= sc.nextInt();for(int i=0;i<=4;i++){String input = sc.nextLine();if(input.length()==0){continue;}melodies.add(input);}Main mainSolver = new Main(melodies);helper("",0);System.out.println(maxLength);}/*** * @param s  传入的当前字符串String* @param n  每次搜索开始位置*/private static void  helper(String s,int n){if(n>=melodies.size())return ;for(int i=n;i<melodies.size();i++){String current = melodies.get(i);if(s==""||current.charAt(0)>=s.charAt(s.length()-1)) {String temp=s;s += current;maxLength = Math.max(maxLength,s.length());helper(s, i + 1);s = temp;}}}}

一定要注意在每个for循环里的最后要进行回溯!在本题中可以先用一个temp字符串保存,最后再赋值给s。

不懂回溯的同学,或者很久没看回溯的同学建议先复习一下相应知识点。

时间复杂度:2^N  空间复杂度:搜索树的深度

PS:今天在听CS188AI这门课的CSP的时候,发现老师讲到了backtracking!

后记:其实写这篇文章的时候,阿里部门二面过了,现在只剩笔试和总监面HR面。我和二面boss聊的时候还问笔试一道都ac不出来怎么办。boss说哈哈哈那你在之后的面试要解释一下为什么了,总之去写,笔试也只是一个参考而已,不是硬性指标。

anyway,希望笔试顺利!笔试要是不顺利也希望闲鱼网开一面让我过鸭~ 疫情之下的北美学生找实习太不容易了 回国的机票再不订就买不起了咳咳,可是阿里的offer还没拿到呢,又不敢订机票。

笔者水平有限,文章难免有疏忽或者错误,还请读者指正。有什么想法请大家互相交流学习~

小菜找实习——阿里3月20日笔试第二题相关推荐

  1. pmp 2021年6月20日考试原题分享

    题目为原题 答案仅供参考 还是要听培训机构老师的答案. 问题:对于一个新的研发项目,必须估算一些有风险活动的成本.为确保高准确性,项目经理应该使用什么估算技术? A:参数估量 B:类比估量 C:质量成 ...

  2. 6月20日云栖精选夜读丨国内首家!阿里云宣布全面提供IPv6服务

    IPv6作为下一代互联网的技术基础,对物联网.车联网.人工智能等新兴产业的发展有着重大影响.6月20日,中国云计算的领头羊阿里云宣布联合三大运营商全面对外提供IPv6服务,希望能在2025年前帮助中国 ...

  3. 互联网晚报 | 12月20日 星期一 | 安踏100亿成立“和敏基金会”;阿里公布碳中和目标;京东上线数字藏品交易平台...

    今日看点 ✦ 阿里公布碳中和目标:2030年自身运营碳中和,带动生态15年减碳15亿吨 ✦ 华为推出"亚米级"高精度定位服务:助力实现真正车道级导航 ✦ 安踏100亿成立" ...

  4. 软件随想录(local.joelonsoftware.com/wiki)-2005年06月20日 最佳软件文选I - 介绍 - Introduction to Best Software Writin

    2005年06月20日 最佳软件文选I - 介绍 - Introduction to Best Software Writing I 最佳软件文选I - 介绍 From The Joel on Sof ...

  5. 第四范式AI新品发布会报名开启(8月20日·上海)

    8月20日,以"万悟赋能 商业生花"为主题的第四范式AI新品发布会将在上海举办.大会将汇聚各行各业商业领袖,共同探讨企业在不确定性中寻求突破与增长的方式,并分享第四范式在过去一年对 ...

  6. 小小突击队为什么服务器正在维护中,4399小小突击队3月20日5:30更新维护公告!...

    亲爱的各位玩家: <小小突击队>将于3月20日5:30-7:30进行维护更新,更新内容如下: 一.英雄 1.新增:海牙战士为了寻找幼年时走失妹妹,加入了小小突击队 2.调整:龙骑士去国外旅 ...

  7. 崩坏三8月20号服务器维修,崩坏38月20日版本更新维护通知

    亲爱的舰长:为了给舰长更好的游戏体验,休伯利安号将在8月20日进行版本更新维护,维护完成后战舰将更新为4.2版本--「幻夜迷迭」. ======维护时间====== 8月20日07:00~12:00 ...

  8. 崩坏三8月20号服务器维修,崩坏3手游8月20日更新了什么

    崩坏3手游8月20日更新了什么?随着时间的推移4.2版本终于来来临了,这次更新具有很多新的内容,很多的小伙伴不知具有什么好玩的内容,超分手游网整理了相关的内容,想要了解的小伙伴一起来看看吧! 崩坏3手 ...

  9. 9月20日科技联播:美团今日上市估值超小米京东;阿里巴巴获杭州第一张自动驾驶牌照...

    美团今日在港敲钟,估值超小米京东,成中国第四大互联网公司 ,"半个互联网敌人"王兴迎来人生巅峰:阿里宣布将路铺在互联网上,云栖现场获得杭州首张自动驾驶牌照:美图秀秀全面改版进军社交 ...

  10. 【历史上的今天】8 月 20 日:两位传奇程序员的诞生日!

    透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 8 月 20 日,在科技历史上,有两位对着后世软件工程和电子游戏行业影响深远的人诞生,谷歌也在去年发布了 Pixel ...

最新文章

  1. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?
  2. 创业版上市与SAP管理软件系统的关系
  3. 白盒测试中的六种覆盖方法及案例分析
  4. 软件测试常见笔试面试题(一)
  5. 嵌入式电路设计(stm32电路设计)
  6. Matlab之字符串的查找(findstr)与替换(strrep)
  7. SpringBoot中如何优雅的使用拦截器
  8. ActionScript3.0面向对象编程的三个特征的论述?
  9. pycharm添加python注释头_pycharm使用教程——py文件自动添加文件头注释
  10. 分类和聚类的区别以及各自常见的算法
  11. 电子智能化专包有哪些要求和标准
  12. Tomcat的appBase和docBase解析
  13. 一个游戏程序员的学习资料(全是好书)
  14. 互联网巨头入局汽车后市场,VIN码识别迎利好
  15. 中国建设银行 APP 忘记登录密码,修改重置操作流程
  16. 互联网的前世今生:Web 1.0、2.0、3.0
  17. java继承extends
  18. 挂号信经过几次签收最终送达收件人?
  19. OKR 结果思维:为什么要以结果为导向?(第一部分)
  20. 虚拟麦克风音频输入_塑电竞强音 为专业而声 全新职业级罗技G PRO X游戏耳机麦克风震撼上市...

热门文章

  1. stl空间配置器alloc
  2. Spring IOC源码笔记(二)
  3. 二叉树(Binary Tree)
  4. dubbo之SPI扩展机制注解:@Extension注解的作用
  5. iOS UI08_TableView界面传值
  6. Linux中断处理“下半部”机制
  7. 如何通过OWA登录界面修改域用户的密码
  8. 使用PHP输出中文JSON字符串
  9. poj2406(kmp循环节)
  10. APUE读书笔记-18终端输入输出-09终端标识