前几天参加了阿里的在线笔试,报的职位是算法工程师,笔试感觉难度适中,选择题包含数据结构、离散数学、小的智力问题还有一些读程序选结果的题目。其中数据结构和排列组合最多。当时比较慌乱,没做记录。只记下了三个附加题。

第一题很简单。要求实现一个方法,在两个排好序(升序)的整型数组中找到中位数。传入4个参数,分别是两个数组和他们的大小。这个题目既然简单就要写的高效一些。我用的归并排序的思想,将两个数组合并,在合并的过程中找到中位数。并对奇偶分情况讨论,注意偶数情况下有可能出现小数。代码如下:

double findMedianSortedArrays(int a[],int m,int b[],int n)
{int sum=m+n;double tmp = 0.0;if (sum %2==0){int pivot=0;sum/=2;int i=0,j=0;while (pivot<sum){if (a[i]<b[j]){tmp=a[i];i++;pivot++;}else{tmp=b[j];j++;pivot++;}}if (a[i]<b[j])tmp+=a[i];elsetmp+=b[j];tmp/=2;}else{int pivot=0;sum=(sum>>1)+1;int i=0,j=0;while (pivot<sum){if (a[i]<b[j]){tmp=a[i];i++;pivot++;}else{tmp=b[j];j++;pivot++;}}}return tmp;
}

第二题是说在2.5D游戏中,各个物体有可能出现重叠和遮挡。例如树、房子等物品。当玩家点击一个地方时,如何判断哪个物体被选中。问题要求是,选取什么样的数据结构和算法,并给出伪代码。这个题我基本不会,但是感觉和图形学里学习的可见性有点像。一个图形学的创始人曾说过,图形学就是排序。意思为当有多个物体需要显示时,哪个物体被遮挡哪个物体显示,排序一下就好了。因此,我就比较无耻的选了数组和排序算法。写了简单的伪代码,希望蒙混一下。

第三题是一个ACM的题,比较难一些。当时截了个图,不知道有没有版权问题。

这个题的难处在于对时间复杂度和空间复杂度的要求。暴力的解法是O(n^2)的,空间复杂度要求不能额外申请与大小n有关d的数组。好在传过来的是一个数组,我们可以从前后同时向中间遍历。我想出的办法是:

用两个临时变量maxl和maxr记录两端向中间遍历时的最大值。max较小的一方采取行动,行动内容为访问下一个元素,如果这个元素小于max,那么max不变,该元素与max的差值为水数量。如果该元素大于max,max更新为该元素。直到两个游标相遇。

代码如下:

#include <iostream>
using namespace std;int volume(int *height,int n)
{int max_l=height[0];int max_r=height[n-1];int i=0,j=n-1;int result = 0;while(i!=j){if(max_l<=max_r){i++;if(height[i]<max_l)result+=max_l-height[i];elsemax_l=height[i];}else{j--;if(height[j]<max_r)result+=max_r-height[j];elsemax_r=height[j];}}return result;
}
int main()
{int array[]={1,0,2,1,0,1,3,2,1,2,1};int result = volume(array,11);cout << result << endl;return 0;
}

阿里在线笔试算法工程师附加题相关推荐

  1. 滴滴2016.09.06校招 在线笔试 - 2道编程题

    滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...

  2. 阿里天池_算法工程师之路

    讲座简介:阿里天池公开课 讲师:王贺,广告推荐算法工程师 1. 什么是算法工程师? 职业定位:企业在不同阶段和不同项目中,对算法的需求是不同的. 主要可分为三个类型: 产品研发型:业务开始阶段,为产品 ...

  3. 阿里巴巴2018校园招聘运筹优化算法工程师编程题

    对于考试向来都是后知后觉,过后留下一堆不甘与遗憾--然而不行就是不行,再接再厉. 声明:涉及阿里校招笔试,如有侵权,请联系我删除. 一.带信号灯的最短路问题 1. 题目描述 现在城市有N个路口,每个路 ...

  4. 2019.9.11 小米笔试算法岗编程题 两个动归

    1.最大连续子序列之和 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C++语言 65536KB:其他语言 589824KB 题目描述: 给定K个整数的序列{ N1, ...

  5. 美团点评2020校招算法工程师编程题--工作安排--动态规划

    题目描述: 小美是团队的负责人,需要为团队制定工作的计划,以帮助团队产出最大的价值. 每周团队都会有两项候选的任务,其中一项为简单任务,一项为复杂任务,两项任务都能在一周内完成.第i周,团队完成简单任 ...

  6. 最新出炉-阿里 2020届算法工程师-自然语言处理(实习生)以及补充:快递最短路径

    问题2感觉跟下面的分苹果类似: 问题 G: 分梨 题目描述 zzq非常喜欢吃梨,有一天他得到了ACMCLUB送给他的一筐梨子.由于他比较仗义,就打算把梨子分给好朋友们吃.现在他要把M个梨子放到N个盘子 ...

  7. 美团小哥用计算机,美团2020算法工程师编程题--外卖小哥的保温箱

    题目描述: 众所周知,美团外卖的口号是:"美团外卖,送啥都快".身着黄色工作服的骑手作为外卖业务中商家和客户的重要纽带,在工作中,以快速送餐突出业务能力:工作之余,他们会通过玩智力 ...

  8. 新浪微博2020界校招笔试-算法工程师

    给定字符串A,A是由逗号分割的数字串,A可以解析成整数数组B.每次操作可以选择任意B[i],并将其递增1.返回使得B中的每个值都是唯一的最小操作次数. 输入描述: 输入每一行字符串,用逗号分隔 如 1 ...

  9. 【小米集团】2019校招在线考试-算法试卷编程题

    1. 小米大礼包 题目描述: 小米之家是成人糖果店.里面有很多便宜.好用.好玩的产品.中秋节快到了,小米之家想给米粉们准备一些固定金额大礼包.对于给定的一个金额,需要判断能不能用不同种产品(一种产品在 ...

  10. 面试笔试算法3-Oj刷题

    Oj599:两数之和1 题目描述 给定一个从小到大的数组和一个目标数 t,在其中找到两个数,使得两数之和与目标数相等,输出两个数在数组中的位置. 输入 第一行两个整数 n,t.(1≤n≤1000000 ...

最新文章

  1. 2019年AI拐点将出现:一次政府,资本与技术公司的围炉深省
  2. 「 每日一练,快乐水题 」599. 两个列表的最小索引总和
  3. Spark不是唯一,三种新兴的开源数据分析工具
  4. Orleans稍微复杂的例子—互动
  5. mvc crud_Spring MVC3 Hibernate CRUD示例应用程序
  6. linux操作系统信号捕捉函数之回调函数小结
  7. ​Python中面向对象的编程
  8. 先序创建二叉树,中序、先序、后序遍历
  9. 将多个集合合并成没有交集的集合
  10. 嵌入式LINUX内核开发专家谈“龙芯”签约MIPS
  11. LOJ2257 SNOI2017 遗失的答案 容斥、高维前缀和
  12. DWGTool Acme CADSee 2020(cad看图软件)官方正式版V6.6.15.1366 | 好用免费的cad看图软件下载
  13. Django数据库的增删改查学习笔记
  14. 信捷PLC跟西门子700IE通信
  15. linux添加fcitx输入法,linux安装输入法_怎么在Linux下安装fcitx输入法
  16. 小说阅读大全(安卓)最后一个绿色版。
  17. mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
  18. java字符串进行中文、特殊字符编码
  19. 2017江苏高职计算机分数线,2017—2019江苏高考招生投档分数线(体育高职专科院校).docx...
  20. win爬取网址获取宵宫语音,使用python的selenium库来模拟点击

热门文章

  1. Ajax 与异步数据传输
  2. Your system is infected with 3 viruses!(您的系统感染了3种病毒!)
  3. #C语言#6.1 数据类型 笔记
  4. Problem B 1076 素数
  5. 思科2960交换机telnet连接配置
  6. Xilinx FPGA 初探内部时钟管理
  7. 服务器租用idc机房功能和配置介绍
  8. 计算机设备评分标准,电脑租赁设备评判标准(硬件篇)
  9. python拨打网络电话_0成本搭建IP电话系统,统一通信系统,呼叫中心系统-3CX快速安装手册...
  10. 硬件工程师综合训练 旋转图形设计