"""
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:区间最小数
最新推荐文章于 2021-09-09 10:25:52 发布