自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 从三道LeetCode例题总结递归套路,解决递归问题

递归解题三部曲何为递归?程序反复调用自身即是递归。我自己在刚开始解决递归问题的时候,总是会去纠结这一层函数做了什么,它调用自身后的下一层函数又做了什么…然后就会觉得实现一个递归解法十分复杂,根本就无从下手。相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。如上图所示,我们需要关心的主要是以下三点:整个递归的终止条件。一级递归需要做什么?应该返回给上一级的返回值是什么?因此

2020-10-31 23:05:31 387 1

原创 110. 平衡二叉树

描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。提示:树中的节点数在范围 [0, 5000] 内-10^4 <= Node.val <= 10^4思路写了半天没ac,最终看了官方题解,我的基本思路和题解的解法二:自底向上的递归一致,只是有部分地方没搞懂,所以没写出来。按照博客的递归解题思路,感觉可以按照递归的套路三步骤来写。并且此题只需要在104.二叉树的最大深度这道题的基础

2020-10-31 22:31:02 96

原创 111. 二叉树的最小深度

描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000思路和104.二叉树的最大深度差不多。每次当到达叶子结点时,判断当前层数是否小于tmpMin。结果太惨了:解答/** * Definition for a binary tree node. * struct TreeNode { *

2020-10-30 20:26:17 152

原创 101. 对称二叉树

描述给定一个二叉树,检查它是否是镜像对称的。进阶:你可以运用递归和迭代两种方法解决这个问题吗?思路:1.使用递归。2.建立一个用来递归的函数,形参为需要判断的两个结点。3.主函数判断根结点是否为空,为空则返回true,不为空则调用递归函数,判断其左右结点的值是否一样,每次递归函数都会返回自己的子树的判断情况。解答/** * Definition for a binary tree node. * struct TreeNode { * int val; * T

2020-10-30 16:03:55 113

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

描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。思路1.使用DFS遍历二叉树,使用变量tmpMax记录当前最大深度。2.每次加深一层则i++,并更新tmpMax的值;每返回一层则i–,这样i将会逐层递增,最终再回到0,tmpMax为最深的层数。解答/** * Definition for a binary tree node. * struct TreeNode { * int val;

2020-10-30 12:37:34 129

原创 144. 二叉树的前序遍历&94. 二叉树的中序遍历&145. 二叉树的后序遍历

描述给定一个二叉树,返回它的中序 遍历。示例:进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路使用递归。解答/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr)

2020-10-29 21:07:57 76

原创 100. 相同的树

描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路遍历左子树和右子树,比较当前p、q结点的值是否一样。使用递归,如果两棵树当前结点的值相等,则继续递归调用,直到结点为空时返回,但结点为空分为两种情况(以下第一种、第二种),则有三种情况为递归出口:第一种:两棵树的当前结点都是空,则返回true;第二种:两棵树的当前结点中有一个为空,另一个不为空,则返回false;第三种:两棵树的当前结点的val值相等,则返回tru

2020-10-29 10:49:24 257

原创 1207. 独一无二的出现次数

描述给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true提示:1 &

2020-10-28 17:28:31 62

原创 19. 删除链表的倒数第N个节点

描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1:遍历先遍历一遍链表,获得结点总数sum。然后需要删除的位置就是sum-n+1(假设从1开始计数)。设置一个哨兵结点,指向head结点,因为会有删除head结点的情况。结

2020-10-28 16:17:27 46

原创 237. 删除链表中的节点

描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你

2020-10-27 19:44:43 68

原创 2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:1.新建一个链表,用来存储结果。2.遍历两个.

2020-10-27 19:25:57 93

原创 206. 反转链表

描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路1:迭代法设置一个临时结点指针tmp,用于保存当前结点改变指向后断开后的列表首元素,一前一后双指针,从头到尾移动。此方法简单。解答1/** * Definition for singly-linked list. * struct

2020-10-23 10:40:38 76

原创 203. 移除链表元素

描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路11.建一个新结点,指向现有的链表头结点。2.设置一个新指针,在链表中循环。解答1思路2解答2...

2020-10-04 22:27:46 92

原创 160. 相交链表

描述编写一个程序,找到两个单链表相交的起始节点。思路11.先来个笨办法:哈希表。遍历第一条链表的地址作为key存入表中,遍历第二条链表查找在哈希表中有无此key即可。2.此解法是暴力解法,虽然时间复杂度最大为O(m+n),但是空间复杂度也是O(max(m,n)),与链表的结点个数n有关,不符合题目要求的O(1)内存。解答1/** * Definition for singly-linked list. * struct ListNode { * int val; *

2020-10-01 20:53:28 57

原创 141. 环形链表

描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?思路1:双指针1.首先要考虑到[]和[

2020-10-01 18:32:13 118

Sublime Text 3 提示“PackageControl”

linux下Sublime Text3提示Package Control:There are no packages available for installation的解决办法文件

2019-02-01

空空如也

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

TA关注的人

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