标签:大于等于 art public 等于 一个 排序 ret col max
输入数据包括多行,如样例输入所示。
输出数据为一行,如样例输出所示
1 1 100 2 3 100 4 5 110
[1, 3, 100],[4, 5, 110]
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 /** 5 * 6 * 酒店价格 7 * 把每天的价格 都放进一个数组里 8 * 遍历 9 * @author Dell 10 * 11 */ 12 public class Main { 13 static public int[][] merge(int[][] datRangePrices){ 14 int maxDay = Integer.MIN_VALUE; 15 int minDay = Integer.MAX_VALUE; 16 // 天数范围 17 for (int i = 0; i < datRangePrices.length; i++) { 18 19 if (datRangePrices[i][1]>maxDay) { 20 maxDay=datRangePrices[i][1]; 21 } 22 if (datRangePrices[i][0]<minDay) { 23 minDay = datRangePrices[i][0]; 24 } 25 } 26 // 构造各天价格数组 27 int [] dayPrice = new int[maxDay+1];//要求下标对应天数 需要加一 28 // 初始化 29 for (int i = 0; i < dayPrice.length; i++) { 30 dayPrice[i]=0; 31 } 32 // 价格赋值 33 for (int i = 0; i < datRangePrices.length; i++) { 34 for (int j = datRangePrices[i][0]; j<=datRangePrices[i][1]; j++) { 35 dayPrice[j]=datRangePrices[i][2]; 36 } 37 } 38 List<int[]> l = new ArrayList<>(); 39 // 装入 第一天 minDay 40 int curPrice = dayPrice[minDay]; 41 int startDay = minDay; 42 int endDay = minDay; 43 // 从第二天循环 44 for (int i = minDay+1; i < dayPrice.length; i++) { 45 if (dayPrice[i]==0) { 46 continue; 47 } 48 if (dayPrice[i]==curPrice) { 49 endDay++; 50 }else { 51 l.add(new int[]{startDay,endDay,curPrice}); 52 startDay = i; 53 endDay = i; 54 curPrice = dayPrice[i]; 55 } 56 } 57 // 最后一个是跳出循环 需要处理 58 endDay = maxDay; 59 l.add(new int[]{startDay,endDay,curPrice}); 60 int res[][] = new int [l.size()][3]; 61 for (int i = 0; i < res.length; i++) { 62 res[i] = l.get(i); 63 } 64 return res; 65 } 66 public static void main(String[] args) { 67 Scanner sc = new Scanner(System.in); 68 List<int[]> list = new ArrayList(); 69 while (sc.hasNextInt()) { // 按 Ctrl + z 结束输入 70 int[] p = new int[3]; 71 p[0]=sc.nextInt(); 72 p[1]=sc.nextInt(); 73 p[2] = sc.nextInt(); 74 list.add(p); 75 } 76 int[][] price = new int[list.size()][3]; 77 price = list.toArray(price);// 将list里的数组转化进price toArray() 会得到object[]会导致转型失败 toArray(price) 里使用泛型可以转型 78 int res[][] = merge(price); 79 // int res[][] = merge(new int[][] {{1,1,100},{2,3,100},{4,5,110}}); 80 String string = ""; 81 for (int i = 0; i < res.length; i++) { 82 string+="["+res[i][0]+", "+res[i][1]+", "+res[i][2]+"],"; 83 } 84 string = string.substring(0,string.length()-1); 85 System.out.println(string); 86 } 87 }
标签:大于等于 art public 等于 一个 排序 ret col max
原文地址:https://www.cnblogs.com/the-wang/p/8981549.html