![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
菜鸟教程*…*
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 39. 数组中出现次数超过一半的数字
原题数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000方法1.摩尔投票法class Solution: def majorityElement(self, nums: List[int]) -> int: counter = 0 .原创 2021-10-12 09:14:39 · 72 阅读 · 0 评论 -
226.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1class Solution: def invertTree(self, root: TreeNode) -> TreeNode: if not root: return root ro原创 2021-10-04 13:29:02 · 85 阅读 · 0 评论 -
python求阶乘和
解法一:while循环求解n = int(input())jie = 1sum = 0i = 1while n >= i: jie = jie * i sum = sum + jie i = i + 1print(sum)解法二:递归求解def jie(n): if n == 1: return 1 else: return n*jie(n-1)n = int(input())sum = 0for原创 2021-10-04 13:09:21 · 5697 阅读 · 0 评论 -
判断列表是否有序
解法一判断列表是否有序class Solution: def isAscSorted(self, nums): n = len(nums) # for i in range(n - 1): # if nums[i] <= nums[i + 1]: # continue # else: # return False i = 0原创 2021-09-30 23:53:20 · 880 阅读 · 0 评论 -
[leetcode]106.从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7class Solution: def buildTree(self, inorder: List[int], postorder: List[int]) -> T.原创 2021-09-29 21:51:51 · 79 阅读 · 0 评论 -
[leetcode] 105.从前序与中序遍历构造二叉树
给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]提示:1 <= preorder.length <= 300...原创 2021-09-29 21:18:46 · 87 阅读 · 0 评论 -
[leetcode] 912.排序数组
给你一个整数数组nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000 -50000 <= nums[i] <= 50000class Solution: def sortArray(self, nums: List[int]) -> Li.原创 2021-09-29 17:59:50 · 81 阅读 · 0 评论 -
[leetcode]236.二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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,..原创 2021-09-28 17:13:18 · 81 阅读 · 0 评论 -
[leetcode]112.路径总和
给你二叉树的根节点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-09-28 16:52:23 · 76 阅读 · 0 评论 -
[leetcode]101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[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进阶:你可以运用递归和迭代两种方法解决这个问题吗?1.递归class Solution: def isSymmetric(self, ro...原创 2021-09-28 16:16:51 · 77 阅读 · 0 评论 -
[leetcode]104.二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。1.递归法class Solution: def maxDepth(self, root: TreeNode) -> int: if root==None..原创 2021-09-28 16:02:59 · 79 阅读 · 0 评论 -
[leetcode]102.二叉树的层序遍历
给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: ..原创 2021-09-28 12:14:06 · 84 阅读 · 0 评论 -
[leetcode]145.二叉树的后序遍历
给定一个二叉树,返回它的后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?1.递归解法class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: self.res = [] self.dfs(root) ...原创 2021-09-28 11:11:17 · 81 阅读 · 0 评论 -
[leetcode]94.二叉树的中序遍历
给定一个二叉树的根节点root,返回它的中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围[0, 100]内 -100 &l...原创 2021-09-28 12:00:17 · 81 阅读 · 0 评论 -
[leetcode] 144.二叉树的前序遍历
给你二叉树的根节点root,返回它节点值的前序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围[0, 100]内 -100 &l...原创 2021-09-28 10:29:05 · 86 阅读 · 0 评论 -
[leetcode] 3.无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度...原创 2021-08-31 10:35:45 · 59 阅读 · 0 评论 -
[leetcode] 142.环形链表2
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用O(1)空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中...原创 2021-08-29 20:07:09 · 97 阅读 · 0 评论