
leetcode
扶我起来继续学习
一点点懒
展开
-
20230504 - 二叉树3 | 104. 二叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数
【代码】20230504 - 二叉树3 | 104. 二叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数。原创 2023-05-10 15:42:51 · 312 阅读 · 1 评论 -
20230503 - 二叉树2 | 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树
二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用,需要借助队列来实现(此时又发现队列的一个应用了)。左右都不为空,比较节点数值,不相同就return false。左节点为空,右节点不为空,不对称,return false。此时左右节点不为空,且数值也不相同的情况我们也处理了。左不为空,右为空,不对称 return false。117.填充每个节点的下一个右侧节点指针II。116.填充每个节点的下一个右侧节点指针、左右都为空,对称,返回true。102.二叉树的层序遍历。199.二叉树的右视图。原创 2023-05-10 15:06:59 · 849 阅读 · 0 评论 -
20230502 - 二叉树1 | 二叉树理论基础、二叉树的递归遍历
如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。每次写递归,都按照这三要素来写,可以保证大家写出正确的递归算法!二叉树可以链式存储,也可以顺序存储。用数组来存储二叉树如何遍历的呢?原创 2023-05-08 16:21:32 · 637 阅读 · 0 评论 -
20230501 - 栈与队列3 | 239. 滑动窗口最大值、347. 前 K 个高频元素
【代码】20230429 -栈与队列3 | 239. 滑动窗口最大值、347. 前 K 个高频元素。原创 2023-05-08 15:36:25 · 111 阅读 · 0 评论 -
20230429 -栈与队列2 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
【代码】20230429 -栈与队列2 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值。原创 2023-05-06 15:41:36 · 91 阅读 · 0 评论 -
20230428 -栈与队列1 | 232. 用栈实现队列、225. 用队列实现栈、Queue和Deque异同介绍
如果把条件放松一下,允许两头都进,两头都出,这种队列叫双端队列(Double Ended Queue),学名Deque。下面一种错误的写法,why?错在pop和top都进行了一次移除并追加操作。我们知道,Queue是队列,只能一头进,另一头出。Queue和Deque异同介绍。原创 2023-04-28 10:22:59 · 536 阅读 · 0 评论 -
20230424 - 哈希表 | 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
时间复杂度O(m+n) 空间复杂度O(1)原创 2023-04-27 11:43:50 · 151 阅读 · 0 评论 -
20230425 | 344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词、剑指Offer58-II.左旋转字符串
其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。原创 2023-04-27 10:43:46 · 101 阅读 · 0 评论 -
20230422 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表 II
那么相遇时: slow指针走过的节点数为: x + y, fast指针走过的节点数:x + y + n (y + z),n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢。原创 2023-04-23 14:32:37 · 534 阅读 · 0 评论 -
20230421 | 203. 移除链表元素、707. 设计链表、206. 反转链表
方法1:不添加虚拟节点方式,但是要注意处理删除头部的数据。时间复杂度 O(n)空间复杂度 O(1)原创 2023-04-21 20:51:32 · 184 阅读 · 0 评论 -
20230420 | 977. 有序数组的平方、 209. 长度最小的子数组、59. 螺旋矩阵 II
1、977. 有序数组的平方方法1:使用暴力法,一遍for,一次排序。这个时间复杂度是 O(n + nlogn), 可以说是O(nlogn)的时间复杂度。class Solution { public int[] sortedSquares(int[] nums) { //先计算出平方 for(int i=0;i<nums.length;i++){ int sum = nums[i]*nums[i]; n原创 2023-04-20 20:44:53 · 624 阅读 · 0 评论 -
20230419 | 704.二分查找、27.移除元素
计算中点: int mid = l+((r-l)>>1);第一次计算中点:int mid = l+(r-l)>>1;特征:数组是升序的找某个数,那就使用二分法。时间复杂度O(log n),空间复杂度O(1)暴力法,找到目标值,然后后面的数全部往前移动一位,数组大小减一。注意:int mid = (l+r)/2;双指针法,用一个for代替两个for,时间复杂度为O(n)快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组。时间复杂度:O(n^2) ,空间复杂度:O(1),比较的是数组里面的值。原创 2023-04-19 18:17:10 · 846 阅读 · 0 评论 -
二叉树系统刷题1
前序遍历的时候我们采用的是“根左右”的遍历次序,如果这棵二叉树是对称的,即相应的左右节点交换位置完全没有问题,那我们是不是可以尝试“根右左”遍历,按照轴对称图像的性质,这两种次序的遍历结果应该是一样的。二叉搜索树是一种特殊的二叉树,它的每个节点值大于它的左子节点,且大于全部左子树的节点值,小于它右子节点,且小于全部右子树的节点值。二叉搜索树最左端的元素一定最小,最右端的元素一定最大,符合“左中右”的特性,因此二叉搜索树的中序遍历就是一个递增序列,我们只要对它中序遍历就可以组装称为递增双向链表。原创 2023-03-21 16:26:58 · 494 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
思路新建一个数组res 用来保存调整完成的数组。遍历两次nums,第一次遍历时把所有奇数依次追加到res 中,第二次遍历时把所有偶数依次追加到 res 中。代码时间复杂度:O(n),其中 n 为数组nums 的长度。需遍历nums 两次。空间复杂度:O(1)。结果不计入空间复杂度。原创 2022-12-13 11:14:17 · 192 阅读 · 0 评论 -
leetcode 根据前序遍历和中序遍历重建二叉树
【代码】leetcode 根据前序遍历和中序遍历重建二叉树。原创 2022-11-29 16:15:31 · 534 阅读 · 0 评论 -
404. 左叶子之和
【代码】404. 左叶子之和。原创 2022-09-19 10:57:51 · 87 阅读 · 0 评论 -
222. 完全二叉树的节点个数
【代码】222. 完全二叉树的节点个数。原创 2022-09-19 09:57:32 · 133 阅读 · 0 评论 -
104. 二叉树的最大深度
递归实现最简单:当节点为null,则返回0;当节点不为空时,求孩子节点中,深度最大的那个值;最后返回孩子节点中,深度最大值+1。方法一:递归法,枢机递归三部曲。第一步确定输入输出;第二步确定终止条件;第三步确定单层递归的逻辑。原创 2022-09-05 10:36:18 · 128 阅读 · 0 评论 -
101. 对称二叉树
比较二叉树外侧是否对称:传入的是左节点的左孩子,右节点的右孩子。如果左右都对称就返回true ,有一侧不对称就返回false。左节点为空,右节点不为空,不对称,return false;左右都不为空,比较节点,不同就要return false;比较内测是否对称,传入左节点的右孩子,右节点的左孩子。左不为空,右为空,不对称 return false;左右都为空,对称,return true;方法三:迭代法,使用普通队列。返回值为boolen类型。原创 2022-09-05 10:08:29 · 210 阅读 · 0 评论 -
面试题 02.07. 链表相交-双指针法
面试题 02.07. 链表相交原创 2022-08-05 10:01:44 · 146 阅读 · 0 评论 -
142. 环形链表 II-双指针法
142. 环形链表 II原创 2022-08-05 09:58:34 · 130 阅读 · 0 评论 -
151. 颠倒字符串中的单词-双指针法
151. 颠倒字符串中的单词原创 2022-08-04 13:57:02 · 96 阅读 · 0 评论 -
344. 反转字符串-双指针法
反转字符串原创 2022-08-04 11:26:33 · 109 阅读 · 0 评论 -
27.移除元素-双指针法
nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。输入:nums = [3,2,2,3], val = 3 输出:2, nums = [2,2] 解释:函数应该返回新的长度 2, 并且。输入:nums = [0,1,2,2,3,0,4,2], val = 2 输出:5, nums = [0,1,4,0,3]解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0,.原创 2022-08-04 11:15:01 · 158 阅读 · 0 评论