python求解重叠区域线段覆盖总长度
来源:互联网 发布:mysql 根据已有的函数 编辑:程序博客网 时间:2024/05/17 20:27
来源于网上的一道面试题目,看到后感觉挺新颖的,正好这一篇博客也有了实现,感觉思路很妙,作者给出来的是Java版本的,这里我简单给出来一下python版本的,先贴一下问题的描述:
问题描述:
现有一直线,从原点到无穷大。
这条直线上有N个线段。线段可能相交。
问,N个线段总共覆盖了多长?(重复覆盖的地区只计算一次)
思路:依据线段的区间将线段的区间像素单位化,即将计算区域的长度转化为所有在覆盖区域中的单位长度的累加即可
下面是具体的实现:
#!usr/bin/env python#encoding:utf-8'''__Author__:沂水寒城功能:求解线段覆盖总长度'''def test_func(num_list): ''' 输入:线段起点、终点 输出:总的覆盖长度 ''' start=1000 end=0 for one_list in num_list: if one_list[0]<start: start=one_list[0] if one_list[1]>end: end=one_list[1] #print start, end flag=['false']*end for i in range(len(num_list)): for j in range(num_list[i][0], num_list[i][1]): flag[j]=True #print flag return flag.count(True)if __name__ == '__main__': num_list1=[[1,3],[2,7],[9,11],[13,20],[15,30]] num_list2=[[1,3],[2,6],[11,12],[10,13]] print 'Total Length is:', test_func(num_list1) print 'Total Length is:', test_func(num_list2)
结果如下:
Total Length is: 25Total Length is: 8[Finished in 0.7s]
阅读全文
1 0
- python求解重叠区域线段覆盖总长度
- 线段的覆盖长度
- 线段覆盖长度
- 线段覆盖长度
- 线段覆盖长度
- 【面试题】一条直线上N个线段所覆盖的总长度
- POJ1743Musical Theme求解不重叠的最长子串长度(后缀数组+二分求解)
- HDOJ 2795 ----线段树(区域覆盖问题)
- 区域覆盖
- Python 线段树求区间覆盖
- 图像重叠区域
- 【算法题】百度笔试题——求一组线段的最大重叠区域
- hdu 1255 覆盖的面积 线段树扫描线求重叠面积
- hdoj 1255 覆盖的面积【线段树 + 扫描线求重叠两次及以上的面积】
- python 求解给定字符串中的最长DNA序列长度
- 线段覆盖
- 线段覆盖
- 线段覆盖
- 深度理解链式前向星
- iinux运用pxe安装虚拟机
- 问题小结
- 牢记25个最佳的SSH命令
- 实验吧keyboard
- python求解重叠区域线段覆盖总长度
- Ubuntu 16.0.4 Linux下安装Docker
- bootstrap轮播图与现实问题和active使用等
- POJ-2407-Relatives(欧拉函数模板题)
- 基于Unity3D 的Htc vive的基本交互
- 23种设计模式汇总整理
- 23. Merge k Sorted Lists
- Linux系统管理与设置
- sql语句行列转至