我必须计算给定时间段之间的工作日数,这很简单,但是考虑到公众假期会增加复杂性。

我的解决方案不是我所说的优雅或有效的解决方案,因为它会检索公共假期并将其放入列表中,通过从开始增加日期来检查列表中的日期是否与给定时间段内的日期匹配以进行检查日期。

尽管这可以正常工作,但我希望有一个更高效的算法,有人可以得到任何提示或推荐其他数据结构来举行公众假期吗?

最佳答案

如果您已按顺序存储了公共假期,则可以在列表中进行二进制搜索,以找到时间段开始的时间在列表中的哪个位置,而另一个则是时间的结束时间在列表中的哪个位置时期下降。然后,您只需要取“正常”差异(除去周末),然后减去二分查找结果之间的项目数。

注意在公共假日开始或结束的时间段!

List<T>.BinarySearch方法对您来说应该很好,假设您使用的是DateTime或其他自然可比较的时间结构。请注意,如果要搜索的键实际上不在列表中,则返回值为负(它将不会大部分时间)。请参阅文档中的备注。)

关于c# - C#代码效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/585406/

10-16 09:04