自定义博客皮肤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】Python实现—226.翻转二叉树

目录一、题目描述二、递归方法思路与算法代码实现复杂度分析三、迭代方法思路与算法代码实现复杂度分析一、题目描述翻转一棵二叉树。示例:输入:输出:二、递归方法思路与算法我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。仔细看下题目的 输入 和 输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。其实就是交换一下左右节点,然后再递归的交换左节点,右节点。根据动画图我们可以总结出递归的两个条件如下:终止条件:当前节点为 null 时返回.

2021-07-09 15:04:37 362

原创 【Leetcode】Python实现—101.对称二叉树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录一、题目描述二、递归方法三、队列迭代错误方法一、题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:二、递归方法# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left

2021-07-09 11:36:51 174

原创 【Leetcode】Python实现—104.二叉树的最大深度

目录一、题目描述二、深度优先搜索思路与算法实现代码复杂度分析三、广度优先搜索思路与算法实现代码复杂度分析一、题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。示例:给定二叉树 [3,9,20,null,null,15,7]返回它的最大深度 3 。二、深度优先搜索思路与算法如果我们知道了左子树和右子树的最大深度 lll 和 rrr,那么该二叉树的最大深度即为max(l,r)+1max(l,r) + 1max(l,r)+1而左子树和右子树的.

2021-07-09 10:25:38 354

原创 【Leetcode】Python实现—102/107.二叉树的层序遍历I /II

102.二叉树的层序遍历I题目描述示例:二叉树:[3,9,20,null,null,15,7]返回其层序遍历结果:[ [3], [9,20], [15,7]]实现层次遍历属于 BFS 的范畴,层次遍历就是按照「树」的层级进行每一层的扫荡。遍历从根结点开始,首先将根结点入队,然后开始执行循环:将头结点入队弹出队首元素,如果被弹出的队首元素有左右孩子,将它们依次入队循环第 2 直到队列为空下面借助一幅图来描述其遍历过程:class Solution: d

2021-07-05 20:19:50 172

原创 【Leetcode】Python实现—145.二叉树的后序遍历

目录一、后序遍历二、递归实现三、迭代实现一、后序遍历二、递归实现a. 先序遍历其左子树;b. 先序遍历其右子树;c. 访问根节点;class Solution: def postorderTraversal(self, root: TreeNode) -> List[int]: def postorder(root: TreeNode): if not root: return p.

2021-07-05 20:09:18 165

原创 【Leetcode】Python实现—94.二叉树的中序遍历

目录一、题目描述题目中序遍历介绍二、递归实现递归遍历过程实现代码三、迭代实现一、题目描述题目给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例1:输入:root = [1,null,2,3]输出:[1,3,2]示例2:输入:root = []输出:[]示例3:输入:root = [1,null,2]输出:[1,2]中序遍历介绍二、递归实现递归遍历过程1. 前序遍历其左子树;2. 访问根节点;3. 前序遍历其右子树;然后就是一直递归下去,在访问到.

2021-07-05 19:44:12 179

原创 【Leetcode】Python实现—144. 二叉树的前序遍历

目录一、题目描述二、 递归实现前序遍历定义二叉树结构:生成二叉树,将列表转成二叉树:实现代码:三、迭代实现代码:一、题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例1:输入:root = [1,null,2,3]输出:[1,2,3]示例2:输入:root = []输出:[]示例3:输入:root = [1]输出:[1]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100二、 递归实现前序遍历用递归

2021-07-05 19:02:52 267

转载 torch.cat() 使用详解

官方文档torch.cat(inputs, dimension=0) → Tensor在给定维度上对输入的张量序列seq 进行连接操作。torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。参数:inputs (sequence of Tensors) – 可以是任意相同Tensor 类型的python 序列dimension (int, optional) – 沿着此维连接张量序列。cat() 函数可以通过下面例子更好的理解。官方例子&gt

2021-07-02 10:41:38 952

原创 Python程序—二叉树定义、构建及列表转化

利用嵌套函数如下例子,将列表转化为二叉树。已知列表nums,nums = [3,9,20,None,None,15,7],转化为下面二叉树:二叉树定义:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None构建满足以上结构的二叉树,可以观察到:树的父节点和左右子节点的关系:基于以上公式,再使用递归构建二叉树。递归基情

2021-07-01 15:05:34 826 1

原创 《算法图解》学习笔记—第10章 K最近邻算法

前言KNN用于分类和回归,需要考虑最近的邻居。分类就是编组。回归就是预测结果(如数字)。特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。能否挑选合适的特征事关KNN算法的成败。使用K最近邻(k-nearest neighbours,KNN)算法对水果进行分类。创建推荐系统假设要为用户创建一个电影推荐系统。可以将所有用户都放入一个图表中,这些用户在图表中的位置取决于其喜好,因此喜好相似的用户距离较近。假设你要向Priyanka推荐电影,可以找出五位与他最接近的用户。

2021-06-29 11:13:28 145

原创 《算法图解》学习笔记—第9章 动态规划

前言 需要在给定约束条件下优化某种指标时,动态规划很有用。 问题可分解为离散子问题时,可使用动态规划来解决。 每种动态规划解决方案都涉及网格。 单元格中的值通常就是你要优化的值。 每个单元格都是一个子问题,因此你需要考虑如何将问题分解为子问题。背包问题小偷背着一个可装4磅东西的背包,可盗窃的商品有如下3件。为了让盗窃的商品价值最高,该选择哪些商品?近似解方法找到的可能不是最优解。那么如何找到最优解呢?每个动态规划算法都从一个网格开始,背包问题的网格如下。第一行是吉他行,意

2021-06-29 10:57:33 176

原创 《算法图解》学习笔记—第8章 贪婪算法

前言贪婪算法:每步都采取最优的做法。每步都选择局部最优解,最终得到的就是全局最优解

2021-06-29 09:44:49 116

原创 《算法图解》学习笔记—第11章 10种算法简介

前言罗列了一些以后可能会用到的算法,并简单介绍了一下,以后具体用到的时候再详细学习。1. 树二叉查找树(binary search tree),一种数据结构。对于其中的每个节点,左子节点的值都比它小,而右子节点的值都比它大。假设你要查找Maggie。为此,你首先检查根节点。Maggie排在David的后面,因此你往右边找。查找过程跟二分查找一样。在二叉查找树中查找节点时,平均运行时间为O(lognlog nlogn),但在最糟的情况下所需时间为O(nnn);而在有序数组中查找时,即便是

2021-06-28 20:09:08 115

原创 《算法图解》学习笔记—第7章 狄克斯特拉算法

前言加权图(weighted graph)——带权重的图狄克斯特拉算法,让你能够找出加权图中前往X的最短路径。狄克斯特拉算法只适用于有向无环图(directed acyclic graph,DAG)。狄克斯特拉算法假设:对于处理过的海报节点,没有前往该节点的更短路径。这种假设仅在没有负权边时才成立。因此,不能将狄克斯特拉算法用于包含负权边的图。在包含负权边的图中,要找出最短路径,可使用另一种算法——贝尔曼-福德算法(Bellman-Fordalgorithm)。狄克斯特拉算法算法步骤

2021-06-28 16:03:38 141

原创 【数据结构】常见数据结构类型

数据元素相互之间的关系称为结构。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。有四类基本结构:集合、线性结构、树形结构、图状结构。1、集合结构:除了同属于一种类型外,别无其它关系。3、线性结构:元素之间存在一对一关系常见类型有: 数组,链表、队列、栈,它们之间在操作上有所区别。例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入,删除操作。3、树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、

2021-06-28 13:56:48 6593

原创 《算法图解》学习笔记—第6章 广度优先搜索

前言广度优先搜索(breadth-first search,BFS)是一种图算法。广度优先搜索可以找出两样东西之间的最短距离,使用广度优先搜索可以:编写国际跳棋AI,计算最少走多少步就可获胜;编写拼写检查器,计算最少编辑多少个地方就可将错拼的单词改成正确的单词,如将READED改为READER需要编辑一个地方;根据你的人际关系网络找到关系最近的医生。最短路径问题(shorterst-path problem)。你经常要找出最短路径,这可能是前往朋友家的最短路径,也可能是国际象棋中把对方将死的

2021-06-28 13:39:24 129

原创 《算法图解》学习笔记—第5章 散列表

学习散列表——最有用的基本数据结构之一。散列表用途广泛,本章将介绍其常见的用途。学习散列表的内部机制:实现、冲突和散列函数。这将帮助你理解如何分析散列表的性能。实例:作为收银员,在本子中查找价格是件很痛苦的事情,哪怕本子的内容是有序的。需要一名能够记住所有商品价格的雇员Maggie,这样你就不用查找了:问她就能马上知道答案。你希望查找商品价格的时间为O(1),这是散列函数的用武之地。5.1 散列函数散列函数是这样的函数,即无论你给它什么数据,它都还你一个数字。即将输入映射到数字。散列函数必.

2021-06-28 09:25:43 115

原创 《算法图解》学习笔记—第4章 快速排序

4.1 分而治之分而治之(divide and conquer,D&C)——一种著名的递归式问题解决方法。D&C并非可用于解决问题的算法,而是一种解决问题的思路。D&C的工作原理:(1) 找出简单的基线条件;(2) 确定如何缩小问题的规模,使其符合基线条件。示例:给定一个数字数组,需要将这些数字相加,并返回结果。使用循环很容易完成这种任务。def sum(arr): total = 0 for x in arr: total += x

2021-06-27 16:44:55 115

原创 《算法图解》学习笔记—第3章 递归

3.1 递归介绍盒子中找钥匙解决方案一:while 循环def look_for_key(main_box): pile = main_box.make_a_pile_to_look_through() while pile is not empty: box = pile.grab_a_box() for item in box: if item.is_a_box(): pile.append(

2021-06-27 16:43:33 193

原创 《算法图解》学习笔记—第2章 选择排序

第2章 选择排序2.1内存的工作原理fe0ffeeb是一个内存单元的地址。需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。2.2 数组和链表有时候,需要在内存中存储一系列元素。假设你要编写一个管理待办事项的应用程序,为此需要将这些待办事项存储在内存中。使用数组意味着所有待办事项在内存中都是相连的(紧靠在一起的)。再添加代办事项时,需要请求计算机重新分配一块可容纳4个待办事项的内存,再将所有待办事项都移到那里。链表

2021-06-27 16:40:40 87

原创 《算法图解》学习笔记—第1章 算法简介

《算法图解》学习笔记—第1章第1章 算法简介1.1 二分查找1.2 大O表示法一些常见的大O运行时间第1章 算法简介算法是一组完成任务的指令,任何代码片段都可视为算法。1.1 二分查找二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。应用实例:在电话簿中找一个名字以K打头的人;登录Facebook时,Facebook必须核实你是否有其网站的账户,须在其数据库中查找你的用户名;以最少的次数猜到一个1~100之间的数字。对于包含n个

2021-06-27 16:37:43 74

原创 《算法图解》学习笔记—第1-4章

《算法图解》学习笔记—第1-4章第1章 算法简介1.1 二分查找1.2 大O表示法一些常见的大O运行时间第2章 选择排序2.1内存的工作原理2.2 数组和链表中间插入删除运行时间2.3 选择排序第3章 递归3.1 递归介绍3.2 基线条件和递归条件3.3 栈调用栈递归调用栈第4章 快速排序4.1 分而治之练习4.2 快速排序第1章 算法简介算法是一组完成任务的指令,任何代码片段都可视为算法。1.1 二分查找二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位

2021-06-27 16:28:12 175

转载 CSDN公式编辑

CSDN公式编辑公式编辑:http://ctex.math.org.cn/blackboard.html直接录入数学公式;键盘同时按下CTRL+SHIFT+L,复制LATEX源码到论坛发帖框;LATEX源码放在$之间;1.四则运算$a+b$ 显示效果a+ba+ba+b$a-b$显示效果a−ba-ba−b$a*b$ 显示效果a∗ba*ba∗b$\frac{a}{b}$ 显示效果ab\frac{a}{b}ba​2.幂指对$x^n$ 显示效果xnx^nxn$x^n$ 显示效果xnx^nxn

2021-06-27 11:28:10 119

空空如也

空空如也

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

TA关注的人

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