自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode-79. 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false思路:

2020-09-30 15:30:11 115

原创 leetcode-543. 二叉树的直径

二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。思路:和尚一道题目非常像:LP定义是:当前节点经过,并且至少经过他的一个字节点# Definitio.

2020-09-30 14:19:43 106

原创 leetcdode- 687. 最长同值路径

最长同值路径给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入: 1 / \ 4 5 / \ \ 4 4 5输.

2020-09-30 09:57:16 101

原创 leetcode-865. 具有所有最深结点的最小子树

具有所有最深结点的最小子树给定一个根为 root 的二叉树,每个结点的深度是它到根的最短距离。如果一个结点在整个树的任意结点之间具有最大的深度,则该结点是最深的。一个结点的子树是该结点加上它的所有后代的集合。返回能满足“以该结点为根的子树中包含所有最深的结点”这一条件的具有最大深度的结点。示例:输入:[3,5,1,6,2,0,8,null,null,7,4]输出:[2,7,4]解释:我们返回值为 2 的结点,在图中用黄色标记。在图中用蓝色标记的是树的最深的结点。输入 “[3, 5.

2020-09-30 08:59:58 183

原创 Leetcode 742.二叉树最近的叶子结点

题目描述给定一个 每个结点的值互不相同 的二叉树,和一个目标值 k,找出树中与目标值 k 最近的叶结点。这里,与叶结点 最近 表示在二叉树中到达该叶节点需要行进的边数与到达其它叶结点相比最少。而且,当一个结点没有孩子结点时称其为叶结点。在下面的例子中,输入的树以逐行的平铺形式表示。实际上的有根树 root 将以TreeNode对象的形式给出。示例 1:输入:root = [1, 3, 2], k = 1二叉树图示: 1 / \ 3 2123输出: 2

2020-09-30 08:23:19 500

原创 leetcode- 124. 二叉树中的最大路径和

二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入:[1,2,3] 1 / \ 2 3输出:6示例 2:输入:[-10,9,20,null,null,15,7]-10/ 9 20/ 15 7输出:42这道题目主要就是思路不懂就问:思路:输的题目,是否使用递归?从某一个节点出发,如果如果加上他的父.

2020-09-30 00:01:06 66

原创 leetcode - 98. 验证二叉搜索树

验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。思想:树的问题一般都是递归,所.

2020-09-29 19:47:09 89

原创 leetcode - 671. 二叉树中第二小的节点

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例 1:输入:2/ 2 5/ 5 7输出: 5说明: 最小的值是 2 ,第二小的值是 5 。示例 2:输入:2/ 2 2输出: -1说明: 最小的值是 2, 但是不存在第二小的值

2020-09-28 22:31:58 188

原创 leetcode-669. 修剪二叉搜索树

修剪二叉搜索树给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入:1/ 0 2L = 1R = 2输出:12示例 2:输入:3/ 0 42/1L = 1R = 3输出:3/2/1二叉搜索树:只有三种情况,左边是小的,右边是大的# Definition for a b.

2020-09-28 21:29:34 118

原创 leetcode-655. 输出二叉树

输出二叉树在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:行数 m 应当等于给定二叉树的高度。列数 n 应当总是奇数。根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下部分。左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西,但仍需要为另一个子树留出足够的空间。然而,如果两个子树都为空则不需要为它们留出任何空间。每个未.

2020-09-28 17:20:37 98

原创 leetcode- 617. 合并二叉树

合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:Tree 1 Tree 21 2/ \ / \3 2 .

2020-09-28 14:48:59 71

原创 leetcode-606. 根据二叉树创建字符串

根据二叉树创建字符串你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4]1/ 2 3/4输出: “1(2(4))(3)”解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空括号对之后,它将是“1(2(4))(3)”。示例 2:输入: 二叉树: [1,2,3,null.

2020-09-28 14:31:34 151

原创 leetcode 404-左叶子之和

左叶子之和计算给定二叉树的所有左叶子之和。示例:3/ 9 20/ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass S.

2020-09-27 16:42:42 186

原创 leetcode-145. 二叉树的后序遍历

二叉树的后序遍历给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?# Definition for a binary tree node.from typing import Listclass TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val .

2020-09-27 16:21:42 150

原创 leetcode- 110. 平衡二叉树

平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2/ \3 3/ 4 4返回 false 。思路:所有节点的左子树和右子树高度之.

2020-09-27 15:05:31 72

原创 leetcode-102 二叉树的层序遍历

二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x.

2020-09-27 14:31:44 101

原创 leetcode-21. 合并两个有序链表

合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4通过次数377,879提交次数586,685class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = .

2020-09-27 12:55:16 72

原创 leetcode-1382. 将二叉搜索树变平衡

将二叉搜索树变平衡给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。如果有多种构造方法,请你返回任意一种。示例:输入:root = [1,null,2,null,3,null,4,null,null]输出:[2,1,3,null,null,null,4]解释:这不是唯一的正确答案,[3,1,4,null,2,null,null] 也是一个可行的构.

2020-09-27 09:22:02 1079

原创 leetcode-1409. 查询带键的排列

查询带键的排列给你一个待查数组 queries ,数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i](从 i=0 到 i=queries.length-1):一开始,排列 P=[1,2,3,…,m]。对于当前的 i ,请你找出待查项 queries[i] 在排列 P 中的位置(下标从 0 开始),然后将其从原位置移动到排列 P 的起始位置(即下标为 0 处)。注意, queries[i] 在 P 中的位置就是 queries[i] 的查询结果。请你以.

2020-09-27 09:03:41 97

原创 leetcode-1395. 统计作战单位数

统计作战单位数n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。每 3 个士兵可以组成一个作战单位,分组规则如下:从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > rating[j] > rating[k] ,其中 0 <= i < j <.

2020-09-27 00:51:50 158

原创 leetcode-1424. 对角线遍历 II

对角线遍历 II给你一个列表 nums ,里面每一个元素都是一个整数列表。请你依照下面各图的规则,按顺序返回 nums 中对角线上的整数。示例 1:输入:nums = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,4,2,7,5,3,8,6,9]示例 2:输入:nums = [[1,2,3,4,5],[6,7],[8],[9,10,11],[12,13,14,15,16]]输出:[1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]示例 3:输.

2020-09-26 09:41:56 226

原创 1438. 绝对差不超过限制的最长连续子数组

绝对差不超过限制的最长连续子数组给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4.[8,2,4] 最大绝对差 |8-2| .

2020-09-26 08:59:37 233

原创 letcode-1443 收集树上所有苹果的最少时间

收集树上所有苹果的最少时间给你一棵有 n 个节点的无向树,节点编号为 0 到 n-1 ,它们中有一些节点有苹果。通过树上的一条边,需要花费 1 秒钟。你从 节点 0 出发,请你返回最少需要多少秒,可以收集到所有苹果,并回到节点 0 。无向树的边由 edges 给出,其中 edges[i] = [fromi, toi] ,表示有一条边连接 from 和 toi 。除此以外,还有一个布尔数组 hasApple ,其中 hasApple[i] = true 代表节点 i 有一个苹果,否则,节点 i 没有苹.

2020-09-26 07:48:12 146

原创 leetcode-

找两个和为目标值且不重叠的子数组给你一个整数数组 arr 和一个整数值 target 。请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。示例 1:输入:arr = [3,2,2,4,3], target = 3输出:2解释:只有两个子数组和为 3 ([3] 和 [3])。它们的长度和为 2 。示例 2:输入:arr =.

2020-09-24 15:21:48 102

原创 leetcode-150. 逆波兰表达式求值

逆波兰表达式求值根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”.

2020-09-24 08:46:41 405

原创 leetcode-452. 用最少数量的箭引爆气球

用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前.

2020-09-23 09:21:39 614

原创 leetcode-848. 字母移位

字母移位有一个由小写字母组成的字符串 S,和一个整数数组 shifts。我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, ‘z’ 将会变成 ‘a’)。例如·,shift(‘a’) = ‘b’, shift(‘t’) = ‘u’,, 以及 shift(‘z’) = ‘a’。对于每个 shifts[i] = x , 我们会将 S 中的前 i+1 个字母移位 x 次。返回将所有这些移位都应用到 S 后最终得到的字符串。示例:输入:S = “abc”, shifts = [3,5.

2020-09-22 20:23:14 343

原创 leetcode - 712 两个字符串的最小ASCII删除和

两个字符串的最小ASCII删除和给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。示例 1:输入: s1 = “sea”, s2 = “eat”输出: 231解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。在 “eat” 中删除 “t” 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。示例 2:输入: s1 = “delete”, s2 = “leet”输出: 403.

2020-09-22 16:13:20 122

原创 leetcode-115 字符串出现子序列的个数

不同的子序列给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:S = “rabbbit”, T = “rabbit”输出:3解释:如下图所示, 有 3 种可以从 S 中得到 “rabbit” 的方案。(上箭头符号 ^ 表示.

2020-09-22 09:20:45 2625

原创 2020-09-21

不同算法在不同容器上的时间复杂度# # 解决方法一:归并排序,从上到下 递归# class Solution:# def merge(self, L1, L2):# L3 = temp = ListNode(0)## while L1 is not None and L2 is not None:# if L1.val > L2.val:# temp.next = L1#

2020-09-21 01:30:16 73

原创 2020-09-16

最长的斐波那契子序列的长度如果序列 X_1, X_2, …, X_n 满足下列条件,就说它是 斐波那契式 的:n >= 3对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列,找到 A 中最长的斐波那契式的子序列的长度。如果一个不存在,返回 0 。(回想一下,子序列是从原序列 A 中派生出来的,它从 A 中删掉任意数量的元素(也可以不删),而不改变其余元素的顺序。例如, [3, 5, 8] 是 [3, 4, 5,.

2020-09-16 16:21:41 119

原创 leetcode-886可能的二分法

给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。示例 1:输入:N = 4, dislikes = [[1,2],[1,3],[2,4]]输出:true解释:group1 [1,4], group2 [2,3]示例 2:输入:

2020-09-15 18:17:22 189

原创 leetcode-891 子序列宽度之和

子序列宽度之和给定一个整数数组 A ,考虑 A 的所有非空子序列。对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。返回 A 的所有子序列的宽度之和。由于答案可能非常大,请返回答案模 10^9+7。示例:输入:[2,1,3]输出:6解释:子序列为 [1],[2],[3],[2,1],[2,3],[1,3],[2,1,3] 。相应的宽度是 0,0,0,1,1,2,2 。这些宽度之和是 6 。提示:1 <= A.length <= 200001 &l.

2020-09-15 15:22:45 116

原创 KSVD字典学习

import numpy as npimport pandas as pdfrom scipy.io import loadmat train_data_mat = loadmat("../data/train_data2.mat") train_data = train_data_mat["Data"]train_label = train_data_mat["Label"] print(train_data.shape, train_label.shape)# 初始化...

2020-09-14 20:29:41 735 1

原创 稀疏表示(二)——KSVD算法详解(结合代码和算法思路)

稀疏表示(二)——KSVD算法详解(结合代码和算法思路) ...

2020-09-14 20:22:38 1002

原创 leetcode-889 根据前序和后序遍历构造二叉树

根据前序和后序遍历构造二叉树返回与给定的前序和后序遍历匹配的任何二叉树。pre 和 post 遍历中的值是不同的正整数。示例:输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]输出:[1,2,3,4,5,6,7]提示:1 <= pre.length == post.length <= 30pre[] 和 post[] 都是 1, 2, …, pre.length 的排列每个输入保证至少有一个答案。如果有多个答案,可以返回其中一个.

2020-09-14 17:43:25 220

原创 leetcode-895最大频率栈

实现 FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack 有两个函数:push(int x),将整数 x 推入栈中。pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。示例:输入:[“FreqStack”,“push”,“push”,“push”,“push”,“push”,“push”,“pop”,“pop”,“pop”,“pop”],[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]

2020-09-14 16:40:27 137

原创 leetcode-894. 所有可能的满二叉树

所有可能的满二叉树满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。答案中每个树的每个结点都必须有 node.val=0。你可以按任何顺序返回树的最终列表。示例:输入:7输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null.

2020-09-14 15:41:46 103

原创 leetcode-898 子数组按位或操作

我们有一个非负整数数组 A。对于每个(连续的)子数组 B = [A[i], A[i+1], …, A[j]] ( i <= j),我们对 B 中的每个元素进行按位或操作,获得结果 A[i] | A[i+1] | … | A[j]。返回可能结果的数量。 (多次出现的结果在最终答案中仅计算一次。)示例 1:输入:[0]输出:1解释:只有一个可能的结果 0 。示例 2:输入:[1,1,2]输出:3解释:可能的子数组为 [1],[1],[2],[1, 1],[1, 2],[1, 1,

2020-09-14 09:38:06 195

原创 PCA和LDA进行数据降维

DimensionalityReductionPCA和LDA进行数据降维使用PCA对数据进行降维,我们使用两种方式:直接按数学推导的方式实现PCA使用sklearn实现PCA利用降维后的特征进行逻辑回归分类代码使用LDA对数据进行降维,我们使用两种方式:直接按数学推导过程实现LDA使用sklearn实现LDA利用降维后的特征进行逻辑回归分类#%% md#%%import numpy as npimport pandas as pdimport matplotlib.pyp

2020-09-10 21:39:00 1036

空空如也

空空如也

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

TA关注的人

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