当前位置: 首页 > news >正文

关于力扣第 167 场双周赛的赛后总结 第三四题

第三题 我赛时写的太过于繁琐

class ExamTracker:def __init__(self):self.pre  = [0]self.dic = {0:0}self.cnt  = 1self.has = []def record(self, time: int, score: int) -> None:self.dic[time] =self.cnt self.pre.append(score +self.pre[-1])self.has.append(time)self.cnt += 1        def totalScore(self, startTime: int, endTime: int) -> int:s = bisect_left(self.has,startTime)e = bisect_left(self.has,endTime)cs = self.dic[self.has[s]]if self.has[e] == endTime: ce = self.dic[self.has[e]]else:if e >= 1:ce = self.dic[self.has[e-1]]else:ce = 0# print(e,cs,ce,self.pre,self.has)return max(0,self.pre[ce] - self.pre[cs-1]) # Your ExamTracker object will be instantiated and called as such:
# obj = ExamTracker()
# obj.record(time,score)
# param_2 = obj.totalScore(startTime,endTime)

其实直接维护一个前缀和数组就行,然后区间搜索的话,左边界bisect_left右边界bisect_right就行。(粘贴的灵神代码)

class ExamTracker:def __init__(self):self.times = []self.pre_sum = [0]def record(self, time: int, score: int) -> None:self.times.append(time)self.pre_sum.append(self.pre_sum[-1] +score)def totalScore(self, startTime: int, endTime: int) -> int:left   = bisect_left(self.times,startTime)right = bisect_right(self.times,endTime)return self.pre_sum[right] - self.pre_sum[left]        # Your ExamTracker object will be instantiated and called as such:
# obj = ExamTracker()
# obj.record(time,score)
# param_2 = obj.totalScore(startTime,endTime)

来到第四题,这题我赛时没出,一些细节没有理明白

我想到了二分,但是很久没有复习二分图的经典算法 ,所以没出。

复习二分图板子如下:

class Solution:def isBipartite(self, graph: List[List[int]]) -> bool:colors = [0]*len(graph)def dfs(x,c):colors[x] = c for y in graph[x]:if colors[y] ==c  or colors[y] == 0 and not dfs(y,-c):return False return True for i,c in enumerate(colors):if c == 0 and not dfs(i,1):return Falsereturn True 

对于该算法,采用交替染色的思路,0是没有染色,1和-1交替染色,一旦发现有同色的,因为在二分图构建过程中,相遇同色节点必定有共同异色节点,无法使该节点集合分为两个互相连接而内部没有连接的二分图。

故把二分图板子构建进去,然后二分一下就行了。

class Solution:def maxPartitionFactor(self, points: List[List[int]]) -> int:if len(points) == 2:return 0 def check(low):colors = [0]*len(points)def dfs(x,c):colors[x] = cx1,y1 = points[x]for y,(x2,y2) in enumerate(points):if y == x or abs(x1 - x2) +abs(y1 - y2) >= low:continue if colors[y] == c or colors[y] == 0 and not dfs(y,-c):return Falsereturn True for i,c in enumerate(colors):if c == 0 and not dfs(i,1):return False return True max_dis = max(abs(x1 - x2) +abs(y1-y2) for (x1,y1),(x2,y2) in combinations(points,2))left = 0right = max_dis +1while left +1 < right:mid = (left + right)>>1if check(mid):left = mid else:right = mid return left

(学习的灵神代码)

总结:看到要将集合分为两部分,想到二分图。

http://www.dtcms.com/a/491457.html

相关文章:

  • 网站开发h5技术两学一做网站源码
  • SpringBoot-自动配置原理
  • AI应用开发001-Conda和Jupyter Lab介绍
  • 在 Android Shell 终端上直接运行 OPENPPP2 网关路由配置指南
  • debug - MDK - arm-none-eabi - 从MDK工程做一个makefile工程出来
  • 郑州外贸网站建设商家内网网站开发报价
  • xxl-job pg数据库适配
  • OSPF路由协议重点总结
  • QT6中QToolBox功能与应用
  • Linux 进程信号机制详解
  • 淘宝客做网站推广自定义页面wordpress
  • YOLO-V1 与 YOLO-V2
  • 中科大少年班记(2025年10月)
  • 微信公众号端网站开发小程序开发费用一览表fhq华网天下
  • 体育数据库:搭建体育应用的核心「数据引擎」
  • 【JETSON+FPGA+GMSL】多功能图像采集卡,以高集成、多通道方案应对工业视觉挑战
  • 做网站教学书微信公众号下载安装
  • 【从零开始构建性能测试体系-07】理解响应时间、吞吐量与并发:性能测试关键指标解读
  • C/C++字符串
  • 上网站乱码python网站开发效率
  • 告别“搬砖”:在AI的辅助下,前端如何触及业务与架构的深水区?
  • 大显存 AI 训练实战:PyTorch/TensorFlow 参数调试与多场景落地指南
  • 石狮新站seo电子商务网站建设与管理感想
  • Socket 抓包工具与实战,从抓取到定位(Socket 的命令、分析)
  • 让安全驾驶有“AI”相伴|腾视科技DMS视频监控一体机,守护每一次出行
  • 软考高项论文考试攻略1:从趋势分析到实战技巧
  • C语言:自定义类型
  • MATLAB中双馈发电机与无刷双馈发电机低电压穿越的异同分析
  • 做公司网站需要多南京建设行政主管部门网站
  • 【CDA案例】某女装品牌如何用AARRR 模型落地实践使私域增长突围的?5分钟get到​重点