【2025刷题笔记】- 免单统计

刷题笔记合集🔗

免单统计

问题描述

小毛的商城举办了一个促销活动,如果某顾客是某一秒内最早时刻下单的顾客(可能是多个人),则可以获取免单优惠。

请你编程计算有多少顾客可以获取免单。

输入格式

第一行为一个整数 ,表示顾客人数。

接下来 行数据,每一行表示一位顾客的下单时间,以(年-月-日时-分-秒.毫秒) yyyy-MM-ddHH:mm:ss.fff 形式给出。

其中:

所有输入保证合法。

输出格式

输出一个整数,表示有多少顾客可以获取免单。

样例输入

3
2019-01-01 00:00:00.001
2019-01-01 00:00:00.002
2019-01-01 00:00:00.003
3
2019-01-01 08:59:00.123
2019-01-01 08:59:00.123
2018-12-28 10:08:00.999
5
2019-01-01 00:00:00.004
2019-01-01 00:00:00.004
2019-01-01 00:00:01.006
2019-01-01 00:00:01.006
2019-01-01 00:00:01.005

样例输出

1
3
3
样例 解释说明
样例1 三个订单都是同一秒内下单,只有第一个订单最早下单,可以免单。
样例2 前两个订单是同一秒内同一时刻(也是最早)下单,都可免单,第三个订单是当前秒内唯一一个订单(也是最早),也可免单。
样例3 前两个订单是同一秒内同一时刻(也是最早)下单,第三第四个订单不是当前秒内最早下单,不可免单,第五个订单可以免单。

数据范围

题解

这道题要求我们确定哪些订单可以享受免单优惠—即在每一秒内最早下单的顾客(可能有多人同时下单)。

解题思路如下:

首先要按照时间戳对所有订单进行排序,然后按照秒级别进行分组,找出每组中时间戳最小的订单。这些订单对应的顾客就是可以享受免单的人。

具体来说,我们可以按照以下步骤来解决:

  1. 将所有订单时间按照时间戳大小排序
  2. 遍历排序后的订单,记录每一秒内出现的最早订单时间
  3. 将相同秒内相同时间戳(最早)的订单都标记为可免单
  4. 统计可免单的订单数量

在实现上,可以采用两种方法:

  1. 用栈来保存所有可免单的订单
  2. 用标记数组记录每个订单是否可免单

时间复杂度分析:

  • 排序时间为O(n log n),这是算法的主要时间消耗
  • 遍历订单时间为O(n)
  • 总时间复杂度为O(n log n)

空间复杂度为O(n),需要保存所有订单及其状态。

这个算法在n最大为50000的情况下表现良好,排序操作耗时可接受。如果输入数据已经按时间排序,算法可以进一步优化。

参考代码

  • Python
import sys
input = lambda:sys.stdin.readline().strip()

# 读取订单数量
n = int(input())

# 读取所有订单时间
orders = []
for i in range(n):
    orders.append(input())

# 对订单按时间排序
orders.sort()

# 用栈保存可免单的订单
free_orders = []
i = 0

while i < n:
    # 当前订单
    order = orders[i]
    
    # 提取订单秒级别信息(去掉毫秒部分)
    second_part = order[:19]
    
    # 当前订单毫秒值
    min_time = order
    
    # 对比同一秒内的所有订单,找最早时刻
    j = i
    while j < n and orders[j][:19] == second_part:
        if orders[j] < min_time:
            min_time = orders[j]
        j += 1
    
    # 将同一秒内最早时刻的订单标记为免单
    for k in range(i, j):
        if orders[k] == min_time:
            free_orders.append(orders[k])
    
    # 移动到下一秒
    i = j

# 输出免单数量
print(len(free_orders))
  • Cpp

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

算法刷题笔记 文章被收录于专栏

本专栏收集并整理了一些刷题笔记

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务