自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十四天|0104 二叉树的最大深度、0111 二叉树的最小深度、0222 完全二叉树的节点个数

题目描述:给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。示例 1:输入:root = [3,9,20,null,null,15,7]输出:3示例 2:输入:root = [1,null,2]输出:2解题思路:确定递归三步骤。

2023-08-24 17:28:54 54 1

原创 代码随想录算法训练营第十三天|0102 二叉树的层序遍历、0226 翻转二叉树、0101 对称二叉树

层序遍历模板注意元素进队列和出队列的方向当队列queue长度不为0时,curLevel维持每一层的元素。

2023-08-24 09:37:11 43 1

原创 二叉树递归遍历

确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。解题思路:递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

2023-08-22 14:17:23 35 1

原创 算法随想录算法训练营第十天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

题目描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。解题思路:分析不匹配的情况第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false。

2023-08-16 15:38:03 52 1

原创 算法随想录算法训练营第九天| 232.用栈实现队列 225. 用队列实现栈

题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true;否则,返回 false解题思路:用入栈 出栈实现。

2023-08-16 14:27:09 49 1

原创 代码随想录算法训练营第八天| 344.反转字符串 、 ● 541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

题目描述:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。解题思路:其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。

2023-08-11 10:27:04 20 1

原创 算法随想录算法训练营第六天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

题目描述:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。

2023-08-09 17:12:57 15

原创 代码随想录算法训练营第六天|242. 有效的字母异位词, 349. 两个数组的交集,202. 快乐数,1.两数之和

题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。解题思路:需要判断两个字符串是否为异位词,利用数组实现hashSet。26个字母创建一个长度为26的Array。利用字符串的编码将字母映射到哈希表里。

2023-08-08 15:59:40 15

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II

题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。解题思路:首先两两交换需要在cur节点后有cur.next 和 cur.next.next再进行交换,只有cur.next就不用交换。

2023-08-07 16:31:10 17 1

原创 代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表

题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。解题思路:通过设置虚拟头节点指向head,使得对head的操作与其他节点一样。因为若要删除链表元素,需要找到待删除元素的前一个元素、

2023-08-02 16:19:40 15 1

原创 代码随想录算法训练营第二天 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

题目描述:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解题思路:数组有序排列,对其元素平方过后最大值出现在nums[0] or nums[nums.length-1] 及数组的头尾 ,要输出从小到大平方后的数组,设置left right两个指针,从两侧向内遍历。

2023-08-01 15:25:35 18 1

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

理解快慢指针:开始fast与slow都为0.快指针与val进行对比,不相等的是就为新数组需要的元素,slow指针为新数组的下标,找到需要的元素时更新nums[slow]。nums[fast]==val的情况,快指针指向的元素不需要,就不更新nums中的元素,fast指针后移直到找到不等于val的元素,这又是新数组需要的,更新nums数组。题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。你不需要考虑数组中超出新长度后面的元素。

2023-07-26 22:45:59 121 1

空空如也

空空如也

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

TA关注的人

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