复盘|第327场周赛
正整数和负整数的最大计数
【遍历】
【二分】找0和1的位置,0左边是负数,1右边是正数。
执行 K 次操作后的最大分数
【最大堆】需要一个找到和修改最大值的数据结构,可以直接把数组取反变成最大堆(堆的底层是数组)。
使字符串总不同字符的数目相等
【枚举】枚举word1中和word2中的每一个字符,最坏复杂度是O(26^2 + n + m),分类讨论x == y 和 x != y的情况。
过桥的时间
【堆模拟】建立4个堆,每个堆都记录工人下标和完成时间(到达桥的时间),这4个堆从左到右分别表示:workL:新仓库正在放箱的工人;waitL:左边等待过桥的工人;waitR:右边等待过桥的工人;workR;旧仓库正在搬箱的工人。记录当前时间cur,不断循环直到所有箱子被搬完,每次循环: ①把完成时间不超过cur的workL弹出,放入waitL中;②把完成时间不超过cur的vorkR弹出,放入waitR中;③如果watR不为空,出堆,过桥,更新cur为过完桥的时间,然后把这个工人放入workL中(记录完成时间);④否则如果watL不为空,出堆,过桥,更新c2ur为过完桥的时间,然后把这个工人放入workR中(记录完成时间),同时把n减一;⑤否则说明cur过小,找个最小的放箱/搬箱完成时间来更新cur。循环结束后,不断弹出wokR,过桥,最后一个工人过完桥的时间即为答案。