题目描述

酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] merge(int[][] dateRangePrices),输入是某个酒店多个日期段的价格,每个日期段(终止日期大于等于起始日期)和对应的价格使用长度为3的数组来表示,比如[0, 19, 300], [10, 40, 250]分别表示从某天开始第1天到第20天价格都是300,第11天到第41天价格都是250,这些日期端有可能重复,重复的日期的价格以后面的为准, 请以以下规则合并并输出合并结果:
1.相邻两天的价格如果相同,那么这两个日期段应该合并
2.合并的结果应该以起始日期从小到大排序

输入描述:

输入数据包括多行,如样例输入所示。

输出描述:

输出数据为一行,如样例输出所示
示例1

输入

1 1 100
2 3 100
4 5 110

输出

[1, 3, 100],[4, 5, 110]

最优的思路当然是放到TreeMap中去,但是很难bug free,调试了半天也找不到错误,自己人为设计test case也没有找到bug

package niuke;import java.util.Scanner;
import java.util.Stack;
import java.util.TreeMap;
import java.util.Map.Entry;/** 不知道Bug在哪*/
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);TreeMap<Integer, int[]> maps = new TreeMap<Integer, int[]>();while(sc.hasNextInt()) {int s=sc.nextInt(), t=sc.nextInt(), m = sc.nextInt();if(maps.isEmpty()) {maps.put(s, new int[]{t,m});continue;}Integer ss = maps.floorKey(s);if(ss==null)   ss=maps.firstKey();while(true) {if(ss==null || ss>t) break;int[] v = maps.get(ss);if(ss>=s&&ss<=t) {maps.remove(ss);if(t>=ss&&t<v[0]) {maps.put(t+1, v);break;}} else if(s>=ss&&s<=v[0]) {maps.remove(ss);if(s>ss)    maps.put(ss, new int[]{s-1,v[1]});if(t<v[0]) {maps.put(t+1, v);break;}} else {break;}ss = maps.higherKey(v[0]);}maps.put(s, new int[]{t,m});}Stack<int[]> st = new Stack<int[]>();while(!maps.isEmpty()) {Entry<Integer, int[]> t = maps.pollFirstEntry();if(!st.isEmpty() && st.peek()[1]+1==t.getKey() && st.peek()[2]==t.getValue()[1]) {int[] tt = st.pop();st.push(new int[]{tt[0], t.getValue()[0], t.getValue()[1]});} else {st.push(new int[]{t.getKey(), t.getValue()[0], t.getValue()[1]});}}StringBuilder sb = new StringBuilder();while(!st.isEmpty()) {int[] t = st.pop();sb.insert(0, ",["+t[0]+", "+t[1]+", "+t[2]+"]");}System.out.println(sb.toString().substring(1));}
}

在实际考试中,写这个TreeMap肯定需要的时间比较多,而且肯定不能这样花大把的时间调试,一个办法是:

先试一下Brute Force,TLE了再先做其他的题目,有时间再来debug这个题

import sys
inputs, ma = [], -1
for s in sys.stdin.readlines():l = list(map(int, s.split(' ')))inputs.append(l)ma = max(ma, max(l))
a = [-1]*(ma+1)
for l in inputs:for i in range(l[0], l[1]+1):a[i]=l[2]res, s, t = [], 1, 1
while True:while s<=ma and a[s]==-1: s+=1if s>ma: breakt = swhile(t<=ma and a[t]==a[s]): t+=1res.append('[%d, %d, %d]'%(s,t-1,a[s]))s = t
print(','.join(res))

酒店价格【实际考试的trick】相关推荐

  1. matlab销量预测的数学模型,数学建模:酒店最优化问题.用matlab算出《酒店价格预测模型》...

    数学建模:酒店最优化问题.用matlab算出<酒店价格预测模型> 39人已浏览 时间 : 2020-10-22 08:23:25 导语:酒店客房管理的数据库模型1.表(客房号,楼,客房类型 ...

  2. 7月更新 携程酒店价格房价爬取

    5月,携程的反爬升级,新增加了加密参数 视屏地址:https://v.youku.com/v_show/id_XNDE3MzMxMjcxNg== 目前js代码已经扒出来了,可实现脱机操作,稳定的解密e ...

  3. 北京高端酒店价格影响分析

    北京高档酒店价格影响因素分析 1.数据读取与清洗 # 导入所需模块 import pandas as pd import numpy as np# 读入数据 data = pd.read_csv('C ...

  4. 南昌较高端酒店价格影响因素浅析(一)

    写在前面:有关北上广深的酒店价格数据分析已经看到过很多,缺鲜有看到过南昌市酒店价格影响因素分析的,遂尝试简单分析南昌市较高端价格影响因素.若读者发现其中有误,劳请指出,定虚心接受. 一.背景:案例以南 ...

  5. 互联网晚报 | 淄博政府回应经济酒店价格上千;多家银行向员工追薪;特斯拉上海储能超级工厂开始招聘...

    淄博政府回应经济酒店价格上千 日前,有网友发布了一张淄博某经济型酒店无窗大床房一晚预订需1000多元的图片引发部分讨论.4月14日,该酒店工作人员告诉红星新闻记者,酒店普通房型的预订价格多在100元左 ...

  6. 酒店价格、集合、文件名称

    /** * 题目描述 酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] * merge(int[][] * d ...

  7. 数据分析实战-酒店价格因素分析-Python

    数据集和源代码放在资源里了 数据集和源代码 导入所需要的包 import numpy as np import pandas as pd import seaborn as sns import ma ...

  8. 根据周次显示日期范围_Elasticsearch根据日期价格范围搜索酒店且排序

    Elasticsearch的相关文章: Elasticsearch读书笔记(一) Docker版Elasticsearch的安装配置 基于SpringBoot.Elasticsearch酒店搜索 El ...

  9. Web网页自动化实战《4.获取所有酒店的名字、价格、评分信息,并写入文件》上篇...

    目录 一.find_elements()的作用 1.获取当前页面中所有酒店名称的元素 2.获取当前页面中所有酒店价格的元素 3.获取当前页面中所有酒店评分的元素 二.分别拿到每家的价格.评分.酒店名并 ...

最新文章

  1. iptables 实现地址转换与安全控制
  2. 【五校联考6day2】er
  3. Oracle 基础 —SQL语句优化的途径
  4. XP下安装SQL2000企业版
  5. 优必选能开放软硬件源代码吗_四个项目供父母教孩子如何使用开放式硬件和电子产品...
  6. 通过Windows远程桌面连接将远程文件传输至本地
  7. 水性油墨在纺织品印花中的应用
  8. 目前大多数个人计算机中可配置,2018年自考《计算机组成原理》试题五
  9. [Swift]添加暂无数据和暂无网络缺省页
  10. 压力换算公斤单位换算_压力表单位换算
  11. STM32-ADC模数转换
  12. Java学习笔记——判断一个数是否是质数
  13. 叶卡捷琳娜与狄德罗的故事
  14. python中清除文件内容用什么函数_数据清洗的基本流程_怎样清除excel中的公式
  15. Python3获取拉勾网招聘信息的方法实例
  16. SAP中采购合同与计划协议价格关联进阶测试
  17. 技能二:数据库(MySQL)·【22江苏转本笔记】
  18. linux操作系统读写文件操作(c语言)
  19. Python支付宝账单 流水号交易记录实时监控爬虫
  20. vue路由守卫中next方法的理解

热门文章

  1. 蓝桥杯第3届省赛(单片机)_自动售水机
  2. 微信小程序:微信公众号关联小程序步骤
  3. 帝国站长php主动推送,帝国cms百度主动推送的教程
  4. 《悟空传》中的经典句子及感想
  5. 支付宝页面第三方登录开发
  6. 图片理解数字签名和验签过程
  7. UGUI -TextMeshPro(TMP) 多材质
  8. [zt] NBA季后赛赛程
  9. c/c++中的两个反正切函数
  10. 谷歌竞价账户效果不好的原因?