刷题记录
通过刷题
复习精进数据结构和算法
提高对编程语言和代码的控制力
self-motivation
专注LINUX系统与性能分析优化
展开
-
leetcode算法---深度优先遍历系列---------检查平衡性
题目描述实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3/ \4 4返回false 。来源:...原创 2020-06-25 23:19:40 · 219 阅读 · 0 评论 -
leetcode算法---字符串系列(一)-------比较版本号
题目描述比较两个版本号 version1和 version2。如果version1>version2返回1,如果version1<version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和. 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设版本号的每一级的默认修订版号为 0。例如,版本号 3.4 的第一级(大版本)和第二级(小版...原创 2020-06-25 23:12:10 · 398 阅读 · 0 评论 -
leetcode算法---动态规划(DP)系列(一)-------打家劫舍
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示...原创 2020-06-25 10:36:33 · 297 阅读 · 0 评论 -
leetcode算法---深度优先遍历系列(一)---------210. 课程表 II
题目描述现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例1:输入: 2, [[1,0]]输出: [0,1]解释:总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课...原创 2020-06-21 23:02:03 · 210 阅读 · 0 评论 -
leetcode算法---深度优先遍历系列(一)---------872.叶子相似的树
题目描述举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。如果给定的两个头结点分别为root1 和root2的树是叶相似的,则返回true;否则返回 false 。提示:给定的两颗树可能会有1到 200个结点。给定的两颗树上的值介于 0 到 200 之间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems...原创 2020-06-21 20:58:03 · 258 阅读 · 0 评论 -
leetcode算法---深度优先遍历系列(一)---------694. 不同岛屿的数量
题目描述给定一个非空01二维数组表示的网格,一个岛屿由四连通(上、下、左、右四个方向)的 1 组成,你可以认为网格的四周被海水包围。请你计算这个网格中共有多少个形状不同的岛屿。两个岛屿被认为是相同的,当且仅当一个岛屿可以通过平移变换(不可以旋转、翻转)和另一个岛屿重合。样例 1:11000110000001100011给定上图,返回结果 1。样例 2:11011100000000111011给定上图,返回结果 <font color="#c7254e..原创 2020-06-21 18:32:32 · 384 阅读 · 0 评论 -
leetcode多线程题(1114)-------------按序打印
我们提供了一个类:public class Foo {public void one() { print("one"); }public void two() { print("two"); }public void three() { print("three"); }}三个不同的线程将会共用一个Foo实例。线程 A 将会调用 one() 方法线程 B 将会调...原创 2020-04-20 22:57:48 · 362 阅读 · 2 评论 -
leetcode竞赛179场周竞赛(4)------------1377. T 秒后青蛙的位置
给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到n。青蛙从顶点 1开始起跳。规则如下:在一秒内,青蛙从它所在的当前顶点跳到另一个未访问过的顶点(如果它们直接相连)。 青蛙无法跳回已经访问过的顶点。 如果青蛙可以跳到多个不同顶点,那么它跳到其中任意一个顶点上的机率都相同。 如果青蛙不能跳到任何未访问过的顶点上,那么它每次跳跃都会停留在原地。无向树的边用数组edges描...原创 2020-03-14 22:54:17 · 231 阅读 · 0 评论 -
leetcode竞赛179场周竞赛(3)------------通知所有员工所需的时间
公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。公司总负责人想要向公司所有员工通告一条紧急消息。他将会首先通...原创 2020-03-13 22:53:02 · 348 阅读 · 1 评论 -
剑指offer(12)------矩阵中的路径
'''0:left1:right2:up3:down'''paths = []def path_in_matrix(matrix, s): row, col = len(matrix), len(matrix[0]) global paths paths = [] if len(s) == 0: return True def...原创 2020-03-09 21:55:18 · 163 阅读 · 0 评论 -
进阶篇---------设计一个O(1)的资源池
设计一个资源池,以下三个操作满足O(1)复杂度:(1)从未分配的资源中分配一块资源;(2)从已分配的资源中释放指定资源;(3)随机访问一块已分配的资源。大致意思是这样。class ResourcePool: def __init__(self, cap): self.rc = [i+1 for i in range(cap)] self.rc[c...原创 2020-03-08 22:09:58 · 473 阅读 · 0 评论 -
剑指offer(10)--------斐波那契与蛙跳
def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2)def fib_no_recusive(n): if n <= 1: return n i, j, k, r = 0, 1, 2, 0 while k <= n: r = ...原创 2020-03-08 21:32:41 · 193 阅读 · 0 评论 -
剑指offer(9)--------用两个栈模拟队列, 用两个队列模拟栈
class TwoStackQueue: def __init__(self): self.head_stack = [] self.tail_stack = [] def appendTail(self, val): self.tail_stack.append(val) def deleteHead(self): ...原创 2020-03-08 20:46:18 · 156 阅读 · 0 评论 -
如何直观地打印一棵二叉树
按层次结构打印二叉树,如下面这棵class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def __str__(self): retur...原创 2020-03-08 19:05:22 · 430 阅读 · 0 评论 -
剑指offer(7)----------重建二叉树
已知二叉树的先序和中序遍历结果,重建这棵二叉树class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def __str__(self): ret...原创 2020-03-08 16:21:22 · 124 阅读 · 0 评论 -
牛客网编程题python实现(一)--------华为2016研发工程师编程题
1.删数时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7-&g...原创 2020-02-09 18:52:46 · 827 阅读 · 0 评论 -
剑指offer(8)-------------二叉树中序遍历的下一个节点
使用两种方法实现。方法一:中序遍历二叉树,记录指定节点,当遍历到下一个节点时返回时间复杂度o(n)方法二:1)当指定节点有右子树时,返回其右子树的第一个中序遍历节点2)当指定节点无右子树时,如果其是父节点的左节点,则返回其父节点3)当指定节点无右子树,且是其父节点的右节点,则一直向上找父节点,当找到某个父节点是其父节点的左节点时返回时间复杂度o(logn)...原创 2020-03-08 15:58:29 · 167 阅读 · 0 评论 -
leetcode竞赛题练习 回溯法(一)------------生成每种字符都是奇数个的字符串
有志同道合的朋友,可以大家一起交流监督学习。哈哈哈 !!!5352.生成每种字符都是奇数个的字符串给你一个整数n,请你返回一个含n个字符的字符串,其中每种字符在该字符串中都恰好出现奇数次。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:"pppz"解释:"pppz" 是一个...原创 2020-03-08 12:06:37 · 285 阅读 · 0 评论