![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
whuzhang16
同学,你这还要多看书啊
展开
-
LeetCode最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成clas..原创 2021-08-21 23:57:40 · 83 阅读 · 0 评论 -
LeetCode外观数列
给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即...原创 2021-08-21 22:30:24 · 151 阅读 · 0 评论 -
Python验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入:2/ \1 3输出: true示例2:输入:5/ \1 4/ \3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 ...原创 2021-06-20 12:15:57 · 837 阅读 · 0 评论 -
Python回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnv1oc/来源:力扣(LeetCode)...原创 2021-06-20 10:15:30 · 100 阅读 · 0 评论 -
Python将有序数组转换为二叉搜索树
之前下载和安装Anaconda,第一次没问题,后来在bashrc注释了conda变量,隔了一段时间再运行conda env create -f environment.yml时报错:InvalidVersionSpecError Invalid version spec: =2.7网上没找到相关的解决方法,就重装了几次未解决,...原创 2021-06-16 22:14:36 · 290 阅读 · 0 评论 -
Python环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4].原创 2021-06-13 23:15:19 · 505 阅读 · 0 评论 -
Python合并两个有序链表
这个也是LeetCode里面的简单级别题目。。。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 1..原创 2021-06-13 22:26:23 · 2367 阅读 · 2 评论 -
Python反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?来源:力扣(LeetCod...原创 2021-06-13 18:47:33 · 2561 阅读 · 0 评论 -
Python 旋转图像
给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2...原创 2021-06-13 09:14:53 · 1520 阅读 · 3 评论 -
Python二叉树的序列化与反序列化
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他.原创 2021-06-11 10:48:51 · 364 阅读 · 1 评论 -
Python二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,6,2,0,.原创 2021-06-11 10:45:40 · 552 阅读 · 0 评论 -
Python填充每个节点的下一个右侧节点指针 II
给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1...原创 2021-06-11 10:41:18 · 154 阅读 · 0 评论 -
Python填充每个节点的下一个右侧节点指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的...原创 2021-06-11 10:34:00 · 136 阅读 · 1 评论 -
Python从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xoei3r/来...原创 2021-06-11 10:30:04 · 1074 阅读 · 1 评论 -
Python从中序与后序遍历序列构造二叉树
#!/usr/bin/python3# -*- coding: utf-8 -*-# Author: zhangxinhong# @Time: 2021/6/10class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right"""根据一棵树的中序遍历与后序遍历构造.原创 2021-06-11 10:26:52 · 1050 阅读 · 1 评论 -
Python判定对称二叉树(递归、迭代)
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetboo...原创 2021-06-10 12:15:24 · 874 阅读 · 0 评论 -
二叉树最大深度(Python递归与迭代实现)
#!/usr/bin/python3# -*- coding: utf-8 -*-# BinaryTree的实现可查看前一篇文章from Tree.BinaryTree import BinaryTreetree = BinaryTree('root')tree.insert_left('left001')tree.insert_right('right001')tree.get_left_node().insert_left('left-left-001')tree.get_lef.原创 2021-06-10 11:05:26 · 249 阅读 · 0 评论 -
Python实现二叉树的定义、前序、中序、后序、层次遍历
定义二叉树类,实现二叉树的插入、查找和赋值:#!/usr/bin/python3# -*- coding: utf-8 -*-class BinaryTree: def __init__(self, root_obj): self.key = root_obj self.leftChild = None self.rightChild = None def insert_left(self, new_node):原创 2021-06-09 20:49:40 · 355 阅读 · 0 评论 -
Python计算二叉树路径总和(遍历、迭代)
给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetSum = 5输出:false示例 3:输入...原创 2021-06-10 14:49:27 · 956 阅读 · 0 评论 -
初识二叉树
前序:根左右;中序:左根右;后序:左右根;中序常用来在二叉搜索数中得到递增的有序序列;后序可用于数学中的后缀表示法,结合栈处理表达式,每遇到一个操作符,就可以从栈中弹出栈顶的两个元素,计算并将结果返回到栈中;之所以叫前序、中序、后序遍历,是因为根节点在前、中、后...原创 2021-06-07 23:07:12 · 126 阅读 · 4 评论