马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
diary:
Yesterday, I completed 4 code brainstorming exercises. In the evening, I discussed and completed the first question of the weekly competition, which was about minimizing arrays and sorting. I had my own ideas, but couldn't write them. Under the guidance of Song Ge, I wrote them, which gave me a great sense of achievement. I also found that my foundation was very weak, and my implementation was very weak. Starting from the second question of the weekly competition this morning, I plan to continue completing 4 greedy algorithms and English learning.
3508. 筹划路由器 - 力扣(LeetCode)
study:
self.dt = defaultdict(lambda :SortedList())
在这行代码中,创建了一个名为 self.dt 的 defaultdict,它是 Python 的 collections 模块中的一个特别字典范例。defaultdict 的特别之处在于,当访问的键不存在时,它会根据提供的工厂函数主动为该键天生一个默认值,而不是抛出 KeyError。
这里的工厂函数是 lambda : SortedList()。这意味着每当实验访问 self.dt 中一个不存在的键时,defaultdict 会主动为该键创建一个新的 SortedList 实例作为默认值。
SortedList 是来自 sortedcontainers 模块的一个类,它提供了一个排序的列表。与平常的 Python 列表差别,SortedList 会主动维护其元素的排序序次。这意味着插入、删除和查找利用都是在排序的上下文中高效实行的。
综上所述,self.dt = defaultdict(lambda : SortedList()) 这行代码的作用是:
- 创建一个 defaultdict 实例,赋值给 self.dt。
- 当访问 self.dt 中一个不存在的键时,会主动为该键创建一个新的 SortedList 实例。
- 这允许你以字典的情势构造多个排序列表,每个键对应一个 SortedList,从而便于管理和访问排序数据。
这种数据结构在处理惩罚必要频仍插入、删除和查找排序数据的场景时非常有效,比如实现有序聚集、优先级队列等。
- dx = self.dt[b].bisect_left((c,a))
复制代码 在代码 dx = self.dt.bisect_left((c,a)) 中,self.dt 是一个利用 defaultdict 创建的字典,其默认值是一个 SortedList 实例。这里,b 是字典 self.dt 的一个键,通常代表一个目标所在。self.dt 因此访问与键 b 关联的 SortedList 实例。
SortedList 是 sortedcontainers 模块中的一个类,它提供了一个主动排序的列表。SortedList 支持很多高效的利用,包罗二分查找。
bisect_left 是 SortedList 类的一个方法,用于实行二分查找以确定应该插入新元素以保持列表有序的位置。假如列表中已经存在与要查找的元素相当的元素,bisect_left 会返回第一个相当元素的索引。
在代码 dx = self.dt.bisect_left((c,a)) 中:
(c,a) 是一个元组,此中 c 是时间戳,a 是源所在。这个元组代表要查找的数据包的特性。
self.dt.bisect_left((c,a)) 在与目标所在 b 关联的 SortedList 中实行二分查找,查找第一个大于或即是 (c,a) 的元素的索引。
假如 SortedList 中存在与 (c,a) 相当的元素,bisect_left 将返回该元素的索引。
假如不存在如许的元素,它将返回应该插入 (c,a) 以保持列表有序的位置的索引。
在这个上下文中,dx 用于标识在 SortedList 中与 (c,a) 对应的元素的位置。这个位置稍后大概用于删除、更新或插入利用。然而,必要注意的是,直接通过索引删除 SortedList 中的元素大概不是最直接的方法,由于 SortedList 没有提供直接的 __delitem__ 方法来按索引删除元素。通常,你必要利用 remove 方法来按值删除元素,大概假如确实必要按索引利用,大概必要思量利用其他数据结构或重新评估你的实现逻辑。
def getCount(self, destination: int, startTime: int, endTime: int) -> int:
sl = self.dt[destination]
return sl.bisect_right(()) - sl.bisect_right((startTime-1,mx))
这里没有明白 ,就是dt是一个字典,.dt[destination]是什么意思?
- 访问目标所在对应的SortedList:
- self.dt 是一个字典,其键是目标所在,值是与之关联的 SortedList 实例。
- self.dt[destination] 通过给定的目标所在 destination 访问了对应的 SortedList 实例,并将其赋值给变量 sl。
我对类这里总是不相识,不敷认识。
1005. K 次取反后最大化的数组和 - 力扣(LeetCode)
- A.sort(key=lambda x: abs(x), reverse=True) # 第一步:按照绝对值降序排序数组A
复制代码 134. 加油站 - 力扣(LeetCode)
末了逆序那边不会,不明白
860. 柠檬水找零 - 力扣(LeetCode)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |