leetcode
rain_Man2018
求知若渴,虚心若愚
展开
-
LeetCode 987. Vertical Order Traversal of a Binary Tree
一:题意 一开始没读懂题,很尴尬! 给定一棵二叉树,然后对节点进行编码,把节点坐标算出来,把一条垂直线上的节点返回。 样例: 输入: 转化为坐标点: 转化规则为:初始化根节点坐标为(0,0),左儿子坐标为(X-1,Y-1),右儿子坐标为(X+1,Y-1),下图中红色点的值为节点值。 看坐标图,X=-1这条垂直线上有节点9,X=0这条垂直线上有节点3,15,依次类推。 所以返回结果为[[9],[3,15],[20],[7]] 二:思路 首先遍历二叉树,把树中的节点转化为二维坐标系下的坐标 对坐标进行排序原创 2020-07-10 12:06:24 · 117 阅读 · 0 评论 -
剑指offer--删除链表中重复的结点--递归版本与非递归版本
删除链表中重复的结点 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 一:非递归版本 class Solution: def deleteDuplication(self, pHead): if not pHead or not pHead.next: return pHead newHead = ListN原创 2020-06-08 00:06:18 · 123 阅读 · 0 评论 -
剑指offer -- 序列化和反序列化二叉树
题意 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。 二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。 实现 # -*- coding:utf-8 -*- # class TreeNode: # def __init__原创 2020-06-05 22:53:33 · 143 阅读 · 0 评论 -
剑指offer--正则表达式匹配
题意 请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配 python实现 递归或动态规划 # -*- coding:utf-8 -*- class Solution: # s, pattern都是字符串 def match(self, s, pattern原创 2020-06-05 15:28:36 · 88 阅读 · 0 评论 -
二叉树的层次遍历--leetcode习题总结
python实现二叉树的层次遍历,并使用两种写法,应用广泛!Leetcode上很多层次遍历的题都可以直接做了!!! 102. Binary Tree Level Order Traversal 429. N-ary Tree Level Order Traversal 199. Binary Tree Right Side View 103. Binary Tree Zigzag Level Order Traversal原创 2019-07-28 17:18:17 · 625 阅读 · 1 评论 -
Leetcode 1376. Time Needed to Inform All Employees (DFS+BFS)
一:DFS class Solution(object): def numOfMinutes(self, n, headID, manager, informTime): if n==1: return informTime[0] mapp = collections.defaultdict(list) # 父亲:[儿子] ...原创 2020-03-08 13:50:45 · 160 阅读 · 0 评论 -
Leetcode 146. LRU Cache + 460. LFU Cache 原理及代码实现
一:原理 详细请见链接:https://www.jianshu.com/p/74a4efacb0a7 Python实现 class LinkedNode(object): def __init__(self, key, val): # 节点需要保存key,val self.key = key self.val = val self.next ...原创 2020-03-02 19:16:54 · 141 阅读 · 0 评论 -
Leetcode Weekly Contest 175
1346. Check If N and Its Double Exist 题意:给定一个数组,检查其中是否存在两个数M,N,满足M*2==N。即满足: i != j 0 <= i, j < arr.length arr[i] == 2 * arr[j] 此外:2 <= arr.length <= 500 思路:数据量很小,直接暴力就行。 class Solution(...原创 2020-02-09 21:16:06 · 238 阅读 · 0 评论 -
镜像二叉树 + Invert Binary Tree + 对称二叉树
一:剑指offer:二叉树的镜像 1.1 题意 操作给定的二叉树,将其变换为源二叉树的镜像。 1.2 思路 这是道简单题,只需要把左右子树的值交换就行,先序遍历,自顶向下进行交换,也就是最左边节点与最右边节点交换值,其他也一样。 这道题所给的树不需要改变二叉树的形态! 1.3 python实现 class Solution: # 返回镜像树的根节点 def Mirror(self...原创 2020-02-07 01:20:13 · 170 阅读 · 0 评论 -
剑指offer---表示数值的字符串
1. 题意 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 2. 思路 把所有表示数值的情况遍历出来 第一: 字符串只包含数字,小数点,正负号,字母’e’或’E’ 第二:个数限制 出现e时: 只出...原创 2020-02-06 16:24:46 · 109 阅读 · 0 评论 -
Leetcode Weekly Contest 174
5328. The K Weakest Rows in a Matrix 1. 题意 给定一个二维矩阵mat,每一行由0,1组成, 1代表士兵,0代表平民,如果一行士兵更多,则称这一行的战斗力更强,求从弱到强的k行,返回下标。 2. 思路 简单的统计每一行中1的个数,然后进行排序即可 这里不仅要记录每一行中1的个数,还得记录每一行的下标!!! 这里不能使用元组来做,因为元组不支持赋值操作,也就是不...原创 2020-02-02 13:01:28 · 209 阅读 · 0 评论 -
剑指Offer -- 二叉搜索树与双向链表
1. 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 2. 解析 首先我们得知道:二叉搜索树的中序遍历是有序的,单调递增! 题意是将二叉搜索树转换成一个排序的双向链表,排序是从小到大排序,因此和中序遍历息息相关! 3. 实现 3.1 中序遍历非递归实现: def Convert(self, root): ...原创 2020-02-02 00:13:09 · 79 阅读 · 0 评论 -
Leetcode Weekly Contest 170
周赛Leetcode Weekly Contest 170原创 2020-01-05 17:29:33 · 175 阅读 · 0 评论 -
LeetCode 236. Lowest Common Ancestor of a Binary Tree 详细题解
一:题意 给定一颗二叉树,两个节点p和q,求出节点p和节点q的最低公共祖先。 最先公共祖先的定义是:The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to...原创 2019-11-07 09:21:53 · 142 阅读 · 0 评论 -
leetcode 46. Permutations and leetcode 47. Permutations II(python实现)
LeetCode 46. Permutations 全排列,树形状态回溯 ,python实现 LeetCode 47. Permutations II,python实现原创 2019-09-15 16:04:29 · 646 阅读 · 0 评论 -
Leetcode 207. Course Schedule + Leetcode 210. Course Schedule II(详细题解)
Leetcode 207. Course Schedule + Leetcode 210. Course Schedule II 你需要上n个课程,标记为0~n-1,有些课程有前导课,比如你要上课程0必须先上课程1,我们用一个整数对[0,1]来表示。 给出课程的总数和一系列的课程先导关系对,判断是否可能上完所有的课程!原创 2019-09-11 09:59:30 · 169 阅读 · 0 评论 -
leetcode 96. Unique Binary Search Trees
一:题意 给定一个n,数值在1-n之间的n个数构成二叉搜索树,求二叉搜索树的个数! 样例输入输出: 二:思路 首先马上就得判断出不能来通过构建二叉搜索树的方式来求个数,而应该找规律!!! 先测试一下n=1,2,3,4,5的输入,观察一下输出,立马就想到了卡特兰数(Catalan number)。 其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 167...原创 2019-09-04 10:45:46 · 92 阅读 · 0 评论