大米实习笔试题
来源:互联网 发布:转视频格式软件 编辑:程序博客网 时间:2024/05/17 01:09
题目:一条直线有n条线段,例如[1,9] 和 [5,10]两条线段,则说线段的覆盖范围为9,如果多重覆盖,则只计算一次,例如[1,9] 和 [2,8]两条线段,则说线段的覆盖范围为8,即 [2,8]在 [1,9]里面不再计算。大米给出的表示是
class Segment{int start;int end;}
最直接的做法,先排序,后计算:
// 插入排序public static void sort(Segment[] seg) {if (seg == null)return;//转换seg,保证每一个seg的start小于endfor(int i=0;i<seg.length;i++){ if(seg[i].start>seg[i].end){int t = seg[i].start;seg[i].start = seg[i].end;seg[i].end = t;}}//插入排序for (int i = 1; i < seg.length; i++) {int tempStart = seg[i].start;int tempEnd = seg[i].end;int j = i - 1;while (j >= 0 && seg[j].start > tempStart) {seg[j + 1].start = seg[j].start;seg[j + 1].end = seg[j].end;j--;}seg[j + 1].start = tempStart;seg[j + 1].end = tempEnd;}}
//计算距离,seg为已经排好序的public static int seg(Segment[] seg){if(seg==null)return -1;if(seg.length==1)return seg[0].end-seg[0].start;int p = 0,q = 0, sum = 0; //p,q为标记线段的起始和终止位置,sum为计算的距离总和for(int i=1;i<seg.length;i++){if(seg[i].start>seg[q].end){ //如果选择的线段起始点大于终止点的end,则把p到q的距离先加起来sum+=(seg[q].end-seg[p].start);//然后至q和q等于新的i,这个时候i还没有加进sump = i;q = i;}else{//如果选择的线段start小于终止点的end,分两种情况if(seg[i].end>seg[q].end){ //1:如果选择的线段end大于终止点的end,则把i设置成新的q = i;//2:如果选择的线段end小于终止点的end,什么都不做}}}sum += (seg[q].end-seg[p].start); //最后要加上没有计算的pqreturn sum;}测试数据:[1,9] [5,7] [2,10] [11,12]
得到的结果:10
测试数据:[11,9] [2,7] [2,10] [11,18]
得到的结果:16
测试数据:[-2,0] [3,7] [2,6] [19,18]得到的结果:8
暂时只想到上面的解法,有更好的解法欢迎指教。
- 大米实习笔试题
- 微软实习笔试题
- 实习笔试题
- 一个实习的笔试题
- 2012腾讯实习笔试题
- 微软暑期实习笔试题
- 一道腾讯实习笔试题
- 2013.05阿里实习笔试题
- 2013腾讯实习笔试题
- Tencent2014实习笔试题 南京
- 2011 创新工场 暑期实习 笔试题
- 2012微软实习笔试题及参考答案
- 百度实习笔试题(2012.5.6)
- 百度实习笔试题(2012.5.6)
- 2012 百度实习笔试题-兄弟单词
- 搜狐校园实习招聘笔试题
- 2012微软暑期实习笔试题
- 2013年几道腾讯实习笔试题
- java中的数据结构--ArrayList
- 影响谷歌排名算法的因素(7) – 域名注册和主机数据
- Windows7下安装IIS出现“出现错误,并非所有的功能被成功更改”
- [iOS学习笔记] 通过FMDataBase使用sqlite数据库
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- 大米实习笔试题
- 2012.4.21腾讯实习生一面
- CSS中的浮动和定位
- 《Spring In action》学习笔记——AOP(面向切面编程)
- 进程状态变迁图
- FCKeditor-Exp通杀0day
- C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方综合比较
- SQL语句学习——alias,连接
- MobclickAgent_onPause_Android