*[Lintcode]Interval Minimum Number 区间最小数
来源:互联网 发布:淘宝哪个返还网最高 编辑:程序博客网 时间:2024/05/16 07:14
Given an integer array (index from 0 to n-1, where n is the size of this array), and an query list. Each query has two integers [start, end]
. For each query, calculate the minimum number between index start and end in the given array, return the result list.
Example
For array [1,2,7,8,5]
, and queries [(1,2),(0,4),(2,4)]
, return [2,1,5]
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */public class Solution { /** *@param A, queries: Given an integer array and an query list *@return: The result list */ public ArrayList<Integer> intervalMinNumber(int[] A, ArrayList<Interval> queries) { SegmentTreeNode s = build(A, 0, A.length - 1); ArrayList<Integer> res = new ArrayList<Integer>(); for(int i = 0; i < queries.size(); i++) { Interval interval = queries.get(i); res.add(find(s, interval)); } return res; } private int find(SegmentTreeNode s, Interval i) { if(s == null) return Integer.MAX_VALUE; if(i.start > s.end || i.end < s.start) return Integer.MAX_VALUE; if(i.start <= s.start && i.end >= s.end) return s.min; else { int left = find(s.left, i); int right = find(s.right, i); return Math.min(left, right); } } private SegmentTreeNode build(int[] A, int start, int end) { if(start > end) return null; SegmentTreeNode root = new SegmentTreeNode(start, end); if(start == end) { root.min = A[start]; return root; } root.left = build(A, start, (start + end) / 2); root.right = build(A, (start + end) / 2 + 1, end); root.min = Math.min(root.left.min, root.right.min); return root; } class SegmentTreeNode { public int start, end, min; public SegmentTreeNode left, right; public SegmentTreeNode(int start, int end) { this.start = start; this.end = end; this.left = this.right = null; } } }
0 0
- *[Lintcode]Interval Minimum Number 区间最小数
- 205.Interval Minimum Number-区间最小数(中等题)
- *[Lintcode]Interval Sum区间最小数
- LintCode:区间最小数
- 区间最小数-LintCode
- lintcode-区间最小数-205
- lintcode(205)区间最小数
- LintCode_205 Interval Minimum Number
- LintCode_205 Interval Minimum Number
- #205 Interval Minimum Number
- 【线段树-区间求和求最小逆序数】HDOJ Minimum Inversion Number 1394
- hdu1394 Minimum Inversion Number 最小逆序数 线段树单点更新区间查询
- hdu1394 Minimum Inversion Number(最小逆序数)
- [Lintcode]Interval Sum II区间求和 II
- HDU 1394 Minimum Inversion Number (线段树+最小逆序数)
- HDU 1394 Minimum Inversion Number 最小逆序数 线段树
- HDU1394-Minimum Inversion Number-归并排序求最小逆序数
- HDU 1394 Minimum Inversion Number(求最小逆序数)
- 文件上传一些事(ie8/9下提示下载json文件)
- 仿360悬浮窗
- Python操作Excel--xlwt
- 88. Merge Sorted Array(二刷,一种简洁的写法)
- Linux系统安装VMware Tools
- *[Lintcode]Interval Minimum Number 区间最小数
- Windows下使用VisualSVN Server搭建SVN服务器
- 如何使用MySQL Workbench建立数据库
- php选择排序详解笔记
- 如何让你的app在后台被干掉后优雅的重新启动
- MUI框架前端开发知识点
- 0039-javascript Date类型转换
- Scala光速入门
- mac上运行React Native开发环境变量配置中遇到的坑