自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2019慢走,感谢你,带给我成长~

Now 2019.12.31,过了今天,再写日期的时候就是2020了吧~回首走过的2019年,真的是收获颇丰的一年,博客真的是见证了我的成长大概会记得也永远不会忘记刚开始的蹒跚学步 好像一切就发生在昨天这样感觉好像毕设答辩完 甚至比那天还要清晰小智障 还记得刚开始做系统原型的时候嘛那时候甚至觉得自己做的超级好 还觉得辛老师挑剔的要命处处为难你细细想来 X老师真的超级好 也超级辛苦 看...

2019-12-31 17:12:20 172

原创 [LeetCode] 145. 二叉树的后序遍历

1 题目描述给定一个二叉树,返回它的 后序 遍历。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 解题思路二叉树的前中后序递归和非递归的做法参考下面的链接二叉树的前中后层序遍历(递归、非...

2019-12-31 09:49:49 181

原创 [LeetCode] 94. 二叉树的中序遍历

1 题目描述给定一个二叉树,返回它的中序 遍历。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 解题思路二叉树的前中后序递归和非递归的做法参考下面的链接二叉树的前中后层序遍历(递归、非递...

2019-12-31 09:48:11 81

原创 [LeetCode] 144. 二叉树的前序遍历

1 题目描述给定一个二叉树,返回它的 前序 遍历。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 解题思路二叉树的前中后序递归和非递归的做法参考下面的链接二叉树的前中后层序遍历(递归、非...

2019-12-31 09:46:19 123

原创 [LeetCode ] 103. 二叉树的锯齿形层次遍历

1 题目描述给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary...

2019-12-30 15:37:00 115

原创 [LeetCode] 107. 二叉树的层次遍历 II

1 题目描述给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tre...

2019-12-30 15:31:39 133

原创 [LeetCode] 102. 二叉树的层次遍历

1 题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-tra...

2019-12-30 15:27:56 159 1

原创 二叉树的前中后层序遍历(递归、非递归Java实现)

1 二叉树的前中后序递归实现树的前中后序的遍历这个是很常见的问题,其递归做法相对简单,呜呜,但是刷题的时候好像都要用非递归//前序遍历List<Integer> preList = new ArrayList<Integer>();public List<Integer> preOrder(TreeNode root){ if(root == nul...

2019-12-30 11:10:18 708

原创 [LeetCode] 1160. 拼写单词

1 题目描述给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = [“cat”,“b...

2019-12-29 22:12:18 155

原创 [LeetCode] 100. 相同的树

1 题目描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。2 解题思路方法一:递归直觉最简单的策略是使用递归。首先判断 p 和 q 是不是 None,然后判断它们的值是否相等。若以上判断通过,则递归对子结点做同样操作。复杂度分析时间复杂度 : O(N),其中 N 是树的结点数,因为每个结点都访问一次。空间...

2019-12-28 21:18:19 116

原创 [LeetCode] 1122. 数组的相对排序

1 题目描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3...

2019-12-28 16:17:32 177

原创 [LeetCode] 509. 斐波那契数

1 题目描述斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 ...

2019-12-28 15:45:32 275

原创 [LeetCode] 999. 车的可用捕获量

1 题目描述在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另...

2019-12-28 15:22:55 126

原创 [常用排序算法] 归并排序 (Merge Sort)

一 基本思想归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。二 算法描述把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序...

2019-12-28 11:02:42 149

原创 [LeetCode] 606. 根据二叉树创建字符串

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

2019-12-27 21:57:52 188

原创 [常用排序算法] 桶排序 (Bucket Sort)

一 基本思想桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。二 算法描述第1步,求数列最大最小值,运算量为n。第2步,创建空桶,运算量为n。第3步,把原始数列的元素分配...

2019-12-26 16:58:22 227

原创 [LeetCode] 1295. 统计位数为偶数的数字

1 题目描述给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)因此只有 12 和 7896 是位数为偶数的数...

2019-12-26 14:56:06 406

原创 [LeetCode] 1071. 字符串的最大公因子

1 题目描述对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”示例 2:...

2019-12-26 14:27:53 136

原创 [LeetCode] 349. 两个数组的交集

1 题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:htt...

2019-12-26 10:41:05 138

转载 [常用排序算法] 堆排序(Heap Sort)

一 基本思想堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组...

2019-12-25 16:34:19 258

原创 [常用排序算法] 希尔排序 (Shell Sort)

一 基本思想希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。希尔排序是把元素按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,...

2019-12-25 09:09:39 150

原创 迭代和递归的区别

递归和迭代都是循环的一种。程序调用自身的编程技巧称为递归,是函数自己调用自己.简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需...

2019-12-24 09:25:10 495

原创 [LeetCode] 559. N叉树的最大深度

1 题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 :我们应返回其最大深度,3。说明:树的深度不会超过 1000。树的节点总不会超过 5000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree...

2019-12-23 19:22:41 145

原创 [LeetCode] 104. 二叉树的最大深度

1 题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tr...

2019-12-23 18:56:28 97

原创 [LeetCode] 415. 字符串相加

1 题目描述给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。来源:力扣(LeetCode)链接:https://leetcode-cn....

2019-12-23 17:41:07 116

原创 [常用排序算法] 快速排序 (Quick Sort)

一 基本思想(分治+填坑)通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。二 算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比...

2019-12-23 11:30:15 182

原创 [常用排序算法] 插入排序(Insertion Sort)

一 基本思想插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。在要排序的一组数中,假定前n-1个数已经...

2019-12-23 09:28:48 480

原创 [常用排序算法] 选择排序(Selection Sort)

一 基本思想选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。二 算法描述(n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。)初始状态:无序区为R[1…n],有序区为空;第...

2019-12-23 09:19:10 223

原创 [常用排序算法] 冒泡排序 (Bubble Sort)

1 算法概述

2019-12-23 08:52:21 187

原创 [LeetCode] 617. 合并二叉树

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

2019-12-21 21:18:46 94

原创 [LeetCode] 938. 二叉搜索树的范围和

1 题目描述给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点数量...

2019-12-21 20:55:49 81

原创 [LeetCode] 541. 反转字符串 II

1 题目描述给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”要求:该字符串只包含小写的英文字母。给定字符串的长度和 ...

2019-12-21 19:13:16 151

原创 [LeetCode] 383. 赎金信

1 题目描述给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”...

2019-12-21 18:11:34 157

原创 [LeetCode] 917. 仅仅反转字母

1 题目描述给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:“ab-cd”输出:“dc-ba”示例 2:输入:“a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”示例 3:输入:“Test1ng-Leet=code-Q!”输出:“Qedo1ct-eeLg=ntse-T!”提示:S.le...

2019-12-20 17:19:29 195

原创 [LeetCode] 824. 山羊拉丁文

1 题目描述给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放...

2019-12-20 17:04:01 116

原创 [LeetCode] 520. 检测大写字母

1 题目描述给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: “USA”输出: True示例 2:输入: “Fla...

2019-12-19 19:47:42 81

转载 [浙大数据结构] 08-图7 公路村村通 (30分)

1 题目描述现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成...

2019-12-19 16:52:27 1418

转载 [LeetCode] 929 独特的电子邮件地址

1 题目描述每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。除了小写字母,这些电子邮件还可能包含 ‘.’ 或 ‘+’。如果在电子邮件地址的本地名称部分中的某些字符之间添加句点(’.’),则发往那里的邮件将会转发到...

2019-12-19 08:47:05 695

原创 [LeetCode] 1170. 比较字符串最小字母出现频次

1 题目描述我们来定义一个函数 f(s),其中传入参数 s 是一个非空字符串;该函数的功能是统计 s 中(按字典序比较)最小字母的出现频次。例如,若 s = “dcce”,那么 f(s) = 2,因为最小的字母是 “c”,它出现了 2 次。现在,给你两个字符串数组待查表 queries 和词汇表 words,请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是满足...

2019-12-18 21:21:41 169

转载 [浙大数据结构] 06-图3 六度空间 (30分)

1 题目描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标...

2019-12-18 20:25:58 437

空空如也

空空如也

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

TA关注的人

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