赞
踩
package 扫描线; import java.math.MathContext; import java.util.Arrays; public class 扫描线 { public static void main(String[] args) { int[][] nums = { {0, 30}, {5, 10}, {15, 20} }; System.out.println(canAttendMeeting(nums)); } //这个求解方式,可以用来求最少需要安排的会议室 static int canAttendMeeting(int[][] nums) { int n = nums.length; int[] begins = new int[n]; int[] end = new int[n]; //将会议起始时间和结束时间单独拿出来,排序。 for(int i = 0; i < n; ++i) { begins[i] = nums[i][0]; } for(int i = 0; i < n; ++i) { end[i] = nums[i][1]; } Arrays.sort(begins); Arrays.sort(end);; int res = 0; int i = 0; int j = 0; int count = 0; while(i < n && j < n) { //扫描到一个起点,加加 if(begins[i] < end[j]) { count ++; i ++; //扫描到一个结束点,就减减。 }else { count --; j ++; } res = Math.max(res, count); } return res; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。