亚马逊2018 OA面试题解:两道数据结构算法问题

需积分: 16 29 下载量 133 浏览量 更新于2024-09-08 收藏 218KB PDF 举报
在亚马逊2018年的在线评估(OA)试题中,考察了两个编程问题。第一题是关于查找给定字符串中所有长度为`l`且字符不重复的子串,并存储在一个集合中去重。这个问题可以使用双指针(滑动窗口)算法配合哈希表(HashMap)来解决。双指针从字符串的起始位置开始移动,每次检查当前子串是否符合长度和字符唯一性的要求,如果符合条件就添加到哈希表中,并更新指针位置。这样可以在O(n)的时间复杂度内完成。 第二题则涉及到字符串处理和区间合并的概念。给定一个字符串,其中的字符序列代表一系列场景,如果连续的相同字符构成的子串被认为是同一个场景,且场景之间可能存在重叠。任务是找到最长的场景。这个问题可以通过将字符串划分为多个非重叠区间,然后合并这些区间以形成最长的场景。可以使用动态规划或者前向遍历的方式,借助双指针策略来完成。例如,可以用一个变量记录当前最长的场景长度,以及开始和结束位置,同时遍历字符串,遇到相同的字符时,更新最长场景。 另外,还有一个涉及字符串搜索的问题,要求找出最短的子序列,该子序列必须包含给定列表`tag_list`中的所有元素。初始的思路可能容易误导,但正确的方法是使用前向遍历(双指针)的策略,通过维护两个指针,一个指向子序列的起始位置,另一个指向当前元素的位置,确保在遍历过程中始终包含所有目标标签。这个问题的关键在于如何有效地跟踪子序列并避免不必要的重复。 以上两个问题都体现了对基础数据结构和算法的理解,特别是字符串操作、哈希表的使用以及动态查找策略。在实际面试中,这类问题旨在考察应聘者的编程能力、逻辑思维和解决问题的能力。解决这些问题时,除了技术实现,清晰的解题思路和良好的编码习惯也是评分的重要标准。希望这份总结能够帮助准备亚马逊OA考试的考生们更好地理解和应对类似题目。
2021-08-02 上传
一、 单选 1、B 2、B 二、多选 1、AD 2、ABCD 3、ABC 4、ABD 三、简答 1、 工程是指按一定的计划、应用科学知识将各种资源最佳地为人类服务进行的工作,如建造、建筑、水利、开矿等。 技术是人类在利用自然和改造自然的过程中积累起来并在生产劳动中体现出来的经验和知识。 经济是一个多义词,通常有下列几方面的含义:经济指生产关系。经济是指一国国民经济的总称,或指国民经济的各部门,如工业经济、农业经济、商业经济等。经济指社会生产和再生产,即物质资料的生产、交换、分配、消费的现象和过程。经济是指节约或节省。 工程、技术和经济的关系十分密切,不可分割。发展经济所进行的活动必须运用一定的技术手段,而任何技术手段的运用都必须消耗或占用人力、物力和财力等资源。所以,技术与经济二者相互促进又相互制约,是始终并存的两个方面。经济发展是技术进步的动力和方向,而技术进步是推动经济发展、提高经济效益的重要条件和手段。社会物质文化需要的满足、国民经济的发展都必须依靠技术的进步和应用。 2、综合性、实用性、定量性、比较性、预测性 3、工程经济学的研究对象是工程项目技术经济分析的最一般方法,即研究采用何种方法、建立何种方法体系,才能正确估价工程项目的有效性,才能寻求到技术与经济的最佳结合点。 4、工程、技术、经济。 5、选择替代方案的原则、方案的可比性原则、社会主义制度下经济效果的评价原则。