算法
陆羽飞
E-mail:jk624472403@gmail.com
我尚未开口你先笑场,如同我脸上画了滑稽的妆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【手撕代码】寻找关联关系中所有独立子图的数量
题目描述:给定图g里所有节点V={vi,i=1,2,...,n},以及节点之间的关联E={{vi,vj}...},假设所有有关联关系的节点能连在一起成为一个独立子图,求g中所有独立子图的数量。样例:输入V = ['v1','v2','v3','v4'],E = [['v1','v2'],['v3','v4']],输出2。思路:图的深度优先遍历def dfs(source): global visited, E stack = [source] while s原创 2020-09-18 15:43:31 · 729 阅读 · 0 评论 -
【手撕代码】不重复打印排序数组中相加和为给定值的所有三元组OR三数之和Leetcode-15
牛客题目链接:不重复打印排序数组中相加和为给定值的所有三元组Leetcode题目链接:三数之和牛客题目输入为有序数组,力扣未排序,要求输出结果无重复。法一:DFS(复杂度为n^3, 超时)# 牛客解法inp = input().split()n, k = int(inp[0]), int(inp[1])arr = []inp = input().split()for i in range(n): arr.append(int(inp[i]))res = []def d原创 2020-08-31 10:55:28 · 449 阅读 · 0 评论 -
【手撕代码】完成任务最少需要几个线程
给定一组任务,每个任务都是独立线程执行,任务包含起始时间和停止时间,求完成这些任务线程池最少需要几个线程。例如:输入[0,3),[1,2),[3,5) (结束时刻不计算在内)输出2思路1:寻找同时运行的最大任务数Python解法:l = [[0,3], [1,2], [3,5]]start = []end = []for i in l: start.append(i[0]) end.append(i[1])start.sort()end.sort()..原创 2020-07-30 16:40:56 · 811 阅读 · 0 评论 -
【手撕代码】返回二叉树自底向上的层次遍历
给定一个二叉树,返回其节点值自底向上的层次遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)【Leetcode-107】例如:给定二叉树[3,9,20,null,null,15,7] 3 / \9 20 / \ 15 7返回其自底向上的层次遍历为:[[15,7], [9,20], [3]]思路:自顶向下利用队列进行BFS,结果队列0处插入P...原创 2020-07-30 16:09:30 · 709 阅读 · 0 评论 -
【手撕代码】输出字符串的最短循环节
样例1:'abab' 输出:'ab'样例2:'abac' 输出:'abac'样例3:'abcabc' 输出:'abc'样例4:'abcabcab' 输出:'abcabcab'实现思路:双指针,遇到重复字符同步后移,通过两组确定重复后检查剩余是否满足重复,如果满足返回重复部分,如果不满足则扩展循环节,继续比较。Python解法:string = 'abcaabca' #string = 'abac'i = 0end = 0j = 1while j < len(st..原创 2020-07-10 22:53:13 · 2692 阅读 · 2 评论
分享