gpt4 book ai didi

java - 如何计算时间表中的 "holes"

转载 作者:行者123 更新时间:2023-11-29 08:17:52 26 4
gpt4 key购买 nike

我有一个像这样的二维数组(它代表一个时间表):

alt text http://www.shrani.si/f/28/L6/37YvFye/timetable.png

橙色单元格是讲座,白色单元格是空闲时间。我如何计算同一天讲座之间的空闲小时数? (列是天,行是小时)

例如,在这个表中结果应该是:
第一列 2
第二列为 0
--> 函数返回2(因为2+0=2)

最佳答案

schedule = ['11010100','01100000'] #original schedule
freehours = [day.strip('0').count('0') for day in schedule]

算法:转换为类似“11010100”的字符串,从开头和结尾(“110101”)去除 0 个字符,然后计算剩余的 0 个字符 (2)。描述性地,第一个和最后一个填充周期之间的所有未填充周期都是您的免费周期。

额外的极客:更有效的是,如果在 C++ 中使用 boolean 数组:获取数组的迭代器,在开始时通过任何 0 vals 运行它。声明另一个并从末尾向后遍历任何 0 vals。然后向前迭代开始迭代器,计算所有零,直到到达结束迭代器。

但是,如果你有一个很长的列表,只向前迭代可能更有效,存储最后一个 1 的位置,并在遇到下一个 1 时将每个空格的大小添加到一个计数器中。这样内存在连续的 block 中读取,并且可以在流式输入上执行求和,甚至将运行总计写入套接字。

关于java - 如何计算时间表中的 "holes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com