LintCode:区间最小数
2016-08-11 00:06
295 查看
LintCode:区间最小数
""" Definition of Interval. class Interval(object): def __init__(self, start, end): self.start = start self.end = end """ class Solution: """ @param A, queries: Given an integer array and an Interval list The ith query is [queries[i-1].start, queries[i-1].end] @return: The result list """ def intervalMinNumber(self, A, queries): # write your code here if A == []: return ans = [] n = len(A) - 1 root = SegmentTreeNode(0, n, min(A)) self.build_segment_tree(root, 0, n, A) for interval in queries: res = self.query(root, interval.start, interval.end) ans.append(res) return ans def build_segment_tree(self, root, start, end, A): if start == end: return left_start = start left_end = (start + end) / 2 left_node = SegmentTreeNode(left_start, left_end, min(A[left_start : left_end+1])) right_start = (start + end) / 2 + 1 right_end = end right_node = SegmentTreeNode(right_start, right_end, min(A[right_start:right_end+1])) root.left = left_node root.right = right_node self.build_segment_tree(root.left, left_start, left_end, A) self.build_segment_tree(root.right, right_start, right_end, A) def query(self, root, start, end): if start > root.end or end < root.start: return 99999 if start <= root.start and end >= root.end: return root.max return min(self.query(root.left, start, end), self.query(root.right, start, end))
相关文章推荐
- lintcode-区间最小数-205
- python_lintcode_177. 把排序数组转换为高度最小的二叉搜索树_156. 合并区间
- *[Lintcode]Interval Minimum Number 区间最小数
- lintcode(205)区间最小数
- 区间最小数-LintCode
- lintcode-205-区间最小数
- Lintcode---区间最小数
- *[Lintcode]Interval Sum区间最小数
- lintcode-177-把排序数组转换为高度最小的二叉搜索树
- noip2012 借教室 (线段树区间减、区间最小)
- POJ1141 Brackets Sequence (最小括号匹配升级版:区间DP+打印路径)
- LintCode : 搜索区间
- hihoCoder 1077 RMQ问题再临-线段树 单点修改,求区间最小值
- lintCode(177)——把排序数组转换为高度最小的二叉搜索树
- POJ 3171(区间覆盖最小代价)
- 关于最小区间覆盖问题(zoj 3197)
- 洛谷1440 求m区间内的最小值
- LintCode:M-二叉查找树中搜索区间
- RMQ模板 求区间最大、最小值。 (前提是数组一旦确定便不再频繁更改)
- 【LintCode】Insert Intervals 插入区间