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

LeetCode 100 -- Day7

1. 图:207

(1)207 课程表

from collections import deque, defaultdict
class Solution(object):def canFinish(self, numCourses, prerequisites):graph = defaultdict(list)indegree = [0]*numCoursesfor course,pre_course in prerequisites:indegree[course] += 1graph[pre_course].append(course)quene = deque()for i in range(numCourses):if indegree[i]==0:quene.append(i)visited = 0while quene:cur_course = quene.popleft()visited += 1for neighbor in graph[cur_course]:indegree[neighbor] -= 1if indegree[neighbor]==0:quene.append(neighbor)return visited == numCourses

2. 数组:189、238

(1)189 轮转数组

​三次反转​​:

  • ​反转整个数组​​:将数组完全反转,使元素从末尾移动到开头。

  • ​反转前 k个元素​​:将前 k个元素反转,恢复其原始顺序。

  • ​反转剩余元素​​:将剩余 n - k个元素反转,恢复其原始顺序。

class Solution(object):def reverse(self,nums,start,end):while start<end:nums[start],nums[end] = nums[end],nums[start]start += 1end -= 1def rotate(self, nums, k):n = len(nums)k = k%nif k==0:    returnself.reverse(nums,0,n-1)self.reverse(nums,0,k-1)self.reverse(nums,k,n-1)

(2)238 除自身以外数组的乘积

(1)计算左边乘积​​:

遍历数组,计算每个元素左边所有元素的乘积,并存储在 answer 数组中。

第一个元素的左边乘积为1。

​(2)计算右边乘积并合并​​:

从右向左遍历数组,使用一个变量 right 累积右边元素的乘积。

将 answer 数组中的左边乘积与右边乘积相乘,得到最终结果。

class Solution(object):def productExceptSelf(self, nums):n=len(nums)answer = [1]*nfor i in range(1,n):answer[i] = answer[i-1]*nums[i-1]right = 1for i in range(n-1,-1,-1):answer[i] *= rightright *= nums[i]return answer

3. 贪心:763

(1)763 划分字母区间

(1)遍历字符串,记录每个字符最后出现的位置(字典 {char:last_pos})

(2)再次遍历字符串,使用两个指针:当前片段的开始位置和当前片段的结束位置。

(3)对于每个字符,当前片段的结束位置为 max(当前字符的最后出现位置,当前结束位置)

(4)当遍历到当前片段的结束位置时,表示当前片段可以结束了,记录片段的长度,然后开始下一个片段。

class Solution(object):def partitionLabels(self, s):char_pos = {}for i,char in enumerate(s):char_pos[char] = istart,end = 0,0results = []for i,char in enumerate(s):end = max(end,char_pos[char])if i==end:results.append(end-start+1)start = end+1return results        

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

相关文章:

  • JDK8升级到JDK17的注意事项
  • @RequiredArgsConstructor 和构造同时使用,注入会不会导致空指针
  • Dify 中的 Signal Killed 问题排查指南
  • 强化学习入门专栏目录
  • 2002-2020年全国投入产出表数据
  • 【C++八股文】操作系统篇
  • C语言 部分内存相关的库函数
  • 广东省省考备考(第八十九天8.28)——判断推理(听课后强化训练)
  • 事务的五大状态
  • QT LInux 开发中一些常用的方法
  • CVPR小模型创新点深度分析:小VLM化身精准向导,大模型多模态推理效率全面加速,性能突破不再依赖算力堆叠
  • 8.28作业
  • Android 编写高斯模糊功能
  • Github上传READ.md后出现不识别换行符的问题
  • Shell编程入门到实战:从基础语法到自动化脚本
  • 网络是怎样连接的,笔记整理
  • C语言知识点补充(链表和队列)
  • 8.变量和数据类型
  • 浏览器访问 ASP.NET Core wwwroot 目录下静态资源的底层实现
  • 多线程 线程池 并发
  • 机器视觉学习-day08-图像缩放
  • MBA/EMBA毕业论文写作总结
  • 第20章|轻松实现远程控制
  • NumPy 2.x 完全指南【三十二】通用函数(ufunc)之数学运算函数
  • 面试tips--JVM(1)--对象分配内存的方式TLAB
  • CTFshow系列——命令执行web61-68
  • C++之多态篇
  • 君正T31学习(四)- MT7682+VLC出图
  • 【python】python进阶——as关键字
  • 程序代码篇---类