自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【Leetcode】501. Find Mode in Binary Search Tree 解题报告

在一棵二叉排序树(非严格定义)中查找出现最多的数字(s)思路对于二叉树的遍历有三种方式,先序后序中序,而这道题一定要用中序遍历,因为只有中序遍历才能将当前节点的值既算在左子树中又算在右子树中,不会因为访问了左子树而对右子树造成影响。方法1 使用字典作为辅助空间(不满足要求 )class Solution1: def findMode(self, root): ""...

2019-02-28 10:30:36 251

原创 【Leetcode】437. Path Sum III解题报告

求二叉树中的一条路径,使其路径和为定值,该路径必须是从上往下的基本的思路就是遍历二叉树中的每个点,然后再求以该点为出发点的所有路径如方法1,方法2方法1 双递归外层递归遍历所有点,内层递归遍历以该点为起点的所有路径class Solution1: def pathSum(self, root, sum): """ :type root: Tree...

2019-02-28 00:05:52 352

原创 【Leetcode】429. N-ary Tree Level Order Traversal 解题报告

层次遍历N岔树class Solution1(object): # 递归法,将节点所在的层数作为参数,层数与数组的位置一一对应 def levelOrder(self, root): """ :type root: Node :rtype: List[List[int]] """ self.res ...

2019-02-26 23:45:07 217

原创 【Leetcode】404. Sum of Left Leaves 解题报告

求二叉树的所有左叶子节点值的和思路判断一个点是不是左叶子节点,要么根据他的父节点判断,父节点的左孩子为叶子,则满足条件,要么给每个节点带一个左右子树的标志位,如果是叶子节点且位于左子树则是左叶子节点可以写出以下六种方法。class Solution1: def sumOfLeftLeaves(self, root): res = 0 if root...

2019-02-26 19:12:12 171

原创 【Leetcode】257. Binary Tree Paths 解题报告

求二叉树的所有路径遍历即可,当遇到叶子节点的时候保存path即可。方法一 递归 使用helper 函数class Solution1: def binaryTreePaths(self, root): """ :type root: TreeNode :rtype: List[str] """ if r...

2019-02-26 11:01:45 234

原创 【Leetcode】235. Lowest Common Ancestor of a Binary Search Tree 解题报告

求二叉排序中的最近公共祖先方法1 递归法找到一个节点的值大于左变小于右边即可class Solution1(object): def lowestCommonAncestor(self, root, p, q): p = p.val q = q.val if q < p: q,p = p,q ...

2019-02-26 00:40:35 118

原创 【Leetcode】112. Path Sum 解题报告

给定sum ,求是否存在根节点到叶子节点的路径使路径上的节点和等于sum方法1 递归class Solution1: def hasPathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: bool """ ...

2019-02-25 23:19:43 176

原创 【Leetcode】111. Minimum Depth of Binary Tree 解题报告

求树的最小深度,深度为根节点到叶子节点的长度方法1 递归对于某个非None节点我们返回其左右子树最小的深度,但是要注意返回的值是否为0,如果为0,其最小深度就是另外一个子树的深度class Solution: def minDepth(self, root): """ :type root: TreeNode :rtype: int...

2019-02-25 22:09:55 188

原创 【Leetcode】110. Balanced Binary Tree 解题报告

判断一个树是不是平衡二叉树方法1 递归对于某个节点。求其左右子树的高度差,如果满足,再递归的判断左右子树。这是一种自顶而下的方法class Solution1: def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ i..

2019-02-25 20:59:48 372

原创 XGBoost学习-分裂点的选择

由上一篇博客我们推倒出Xgboost 目标函数(损失函数)的表达形式为其实际意义表示按照特定分裂点(即按照某种树的结构)分裂后产生的损失值其中IjI_{j}Ij​表示被分到第j个叶子节点的样本这样,我们可以得到样本III依据某个特征值分裂后的损失函数的减小值Lsplit\mathcal{L}_{s p l i t}Lsplit​,将其作为分裂时的依据。其中:IL和IRI_{L}...

2019-02-25 12:37:07 11642 3

原创 【Leetcode】108. Convert Sorted Array to Binary Search Tree 解题报告

方法1 递归法递归法每次传入要被建树的子数组即可,可以传入数组切片,也可以传入起始的位置值class Solution(object): def sortedArrayToBST(self,nums): """ :type nums: List[int] :rtype: TreeNode """ if nu..

2019-02-24 19:19:54 239

原创 【Leetcode】107. Binary Tree Level Order Traversal II 解题报告

层次遍历二叉树,并从下往上按层输出方法1 广搜用栈实现广搜,每次将层次遍历的结果插入res的头部即可class Solution1: def levelOrderBottom(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ ...

2019-02-24 14:07:05 176

原创 【Leetcode】104. Maximum Depth of Binary Tree 四种方法求树的深度

求树的深度方法1 深度优先递归法1深搜每个节点,并保存每个节点的深度class Solution1: def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ self.res = [] self.levelTr...

2019-02-24 13:23:49 331

原创 【Leetcode】100.SameTree 解题报告

判断两棵树是否是完全相同的方法1 递归法每次递归的检查两个节点,如果相同,再递归的检查一对左子树和一对右子树class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool...

2019-02-24 10:47:47 170

原创 Morris算法先序、中序遍历二叉树

常见的二叉树遍历算法有递归非递归形式,但实际内部都是要通过栈来进行存储,而Morris算法只需要O(1)的空间复杂度,通过调整叶子节点的指针即可完成二叉树的遍历。如上图所示,4 5 6都是叶子节点,他们的left,right都指向None,我们可以将right指针利用起来,将叶子节点的right 指针指向下一个待访问的节点,这样我们就不需要用栈,就可以挨个遍历二叉树的所有节点。Morris算...

2019-02-24 00:56:33 731

原创 算法面试题总结-A篇

题目1:有一百个灯泡连成环,灯泡按一下转态反转一次。每次点按下一个灯泡,相邻的两个灯泡的状态都会反转,比如亮-暗-亮三个灯泡,点击中间的灯泡,这三个灯泡会变成暗-亮-暗。灯泡的初始状态随机,问如何做才能使所以灯泡都变亮,如果无法做的,请描述什么情况下无法做到。我们可以采取贪心的方法,从编号1-98,每次让当前的灯泡亮,这是可以做到的,比如让编号为3的灯泡亮,在不影响前面已经调好的灯泡的前提下,我...

2019-02-23 20:22:19 334

原创 XGBoost学习-目标函数推导

目标函数推导目标函数的基本形式模型对于某个样本的预测值:fkf_{k}fk​是基学习器,最终模型是多个基学习器最初的目标函数可以写成y^i(t−1)\hat{y}_{i}^{(t-1)}y^​i(t−1)​:是前t-1个集成学习器对样本的预测值ft(xi)f_{t}\left(\mathbf{x}_{i}\right)ft​(xi​):是当前学习器对样本的预测值Ω(ft)\Ome...

2019-02-22 20:25:20 1443

原创 回归树学习小记 RegressionTree

不管是分类树还是回归树,首先要明确的是,他们使用的特征即可是连续的也可以是离散的,label 是连续值还是类别决定了决策树是分类树还是回归树。下面是李航的统计学习方法中给出的CART回归树的算法。其中最关键的就是过程(1)首先选择切分变量j,切分变量就是对应的特征,而切分点就是对应切分变量的某个值。对于离散变量,可能为:是xx,不是xx;对于连续特征,可能为 >xx,<= x...

2019-02-22 15:46:24 1028

原创 【Leetcode】101. Symmetric Tree解题报告

判断一棵树是不是对轴称的方法1 递归法递归法很简单的,每次传入对称的两个节点A,B即可。如果AB是对称的,再判断他们子树是否是对称的,即A.left与B.right,A.right和B.left,递归的去求解即可class Solution: def isSymmetric(self, root): """ :type root: TreeNode...

2019-02-22 12:50:47 209

原创 maven 最原始的setting.xml 备份

<?xml version="1.0" encoding="UTF-8"?><!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE filedistributed with this work...

2019-02-22 00:08:46 2164

原创 快排的两种写法

面试的时候经常让写快排,快排有两种写法,每种写法又可以分为递归与非递归。把这四种写法烂熟于心对于面试有极大的好处。方法1第一种方法用两个指针,取数组的第一个元素作为中轴,每次留出一个空位用来存放不满足条件的元素,举个例子:3,8,7,3,5,2,6,13 作为中轴,那么第一个位置空出来得到:__,8,7,3,5,2,6,1-left = 0,right = len(array)-1,两...

2019-02-21 21:01:20 1575

原创 【Leetcode】Permutations 解题报告

题目描述:求数组元素的全排列面试的时候已经有多家公司问到这道题了不包含重复元素的全排列方法1 回溯法class Solution(object): def permute(self, nums): self.res = [] self.helper(nums, []) return self.res def helper(...

2019-02-20 13:29:38 171

原创 【Leetcode】226. Invert Binary Tree 解题报告

头条面试问到的原题交换二叉树的左右子树:方法1 递归代码简单易写,但面试的时候写出递归面试官肯定会让你写非递归的class Solution(object): def invertTree(self, root): """ :type root: TreeNode :rtype: TreeNode """ ...

2019-02-19 23:19:36 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除