【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次
2015-10-10 14:02
579 查看
2016年小米校招笔试第一题(西安站)
1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次。
参考解法(Java版):
运行结果:
1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次。
参考解法(Java版):
package XiaoMi; /******************************************************** * 算法思想:将长线段细分为长度为1的小段,用布尔数组记录每一个小段; * 遍历所有长段,如果有覆盖则在数组中把该索引处的布尔值标记为ture; * 最后,遍历布尔数组中所有值为ture的小段个数,即为所求总覆盖长度。 * ******************************************************/ public class test13 { // 指定线段中点的最大范围 private final static int N = 99999; // 布尔数组用来记录已覆盖小段 private static boolean b[]; // 定义线段的数据结构 class XianDuan { int start; //线段起点 int end; //线段终点 } // 遍历布尔数组求总覆盖长度 static int sum(XianDuan[] xd) { b = new boolean ; int start = 0; int end = 0; // 标记过程 for (int i = 0; i < xd.length; i++) { for (int j = xd[i].start; j < xd[i].end; j++) { b[j] = true; //System.out.println("置为true"); } // 找到boolean数组索引的最大值 if (xd[i].end > end) { end = xd[i].end; } // 找到boolean数组索引的最小值 if (xd[i].start < start) { start = xd[i].start; } } // 统计过程 int count = 0; for (int i = start; i < end; i++) { if (b[i]) { count++; } } return count; } public static void main(String[] args) { /* * A a = new A(); A.B b = a.new B(); //内部类实例化 */ test13 tt = new test13(); test13.XianDuan x1 = tt.new XianDuan(); x1.start = 1; x1.end = 3; test13.XianDuan x2 = tt.new XianDuan(); x2.start = 2; x2.end = 6; test13.XianDuan x3 = tt.new XianDuan(); x3.start = 11; x3.end = 12; test13.XianDuan x4 = tt.new XianDuan(); x3.start = 10; x3.end = 14; XianDuan xx[] = { x1, x2, x3, x4 }; System.out.println(sum(xx)); } }
运行结果:
9
相关文章推荐
- SQL注入——如何攻击(一)
- JS正则表达式验证账号、手机号、电话和邮箱
- Hadoop获得先进的步步高(四)-试Hadoop
- linux安装yaf(ubuntu教程)
- cydia substrate android permission denied Script Failure
- Datamining
- javascript 返回上一页面:onclick="javascript:history.back(-1);"
- 如何修改mysql字符编码
- max min
- android ndk Toolchain
- iOS开发系列--通知与消息机制
- Mockito--实例篇
- 解决hadoop namenode 无法启动
- SQL注入——如何防御(三)
- iGrimaceV8 V8在线威锋源apt.so/qwkjv8手机直接下载安装教程
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
- 制作banner切换效果
- PASSION之Logback(1)
- 监听android wifi状态变化监听
- iOS抽奖转盘动画之CAAnimation动画