- 博客(36)
- 收藏
- 关注
原创 算法代码笔试中处理输入输出的问题【java】
如果我们使用 BufferedReader 对它进行包装,那么每次读取操作时,BufferedReader 会先把数据缓存到内存中,减少了从底层流获取数据的次数,这样可以显著提高性能。它的作用是通过将输入数据缓冲到内存中,减少对磁盘或输入流的访问次数,从而提高程序的性能,特别是在读取大量文本数据时。如果我们不使用 BufferedReader 来包装它,它将直接从输入流读取每一个字符,可能会导致较慢的性能,尤其是当数据量很大时。它将输入流中的字符分割成有意义的单元,例如数字、单词、符号等。
2025-02-28 11:10:03
849
原创 代码随想录day13|递归遍历|迭代遍历| 统一迭代 |层序遍历
二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存链式存储的二叉树节点的定义方式:(定义二叉树,想成是定义链表,很简单)二叉树的应用使用较多的思想是递归,后续着重学习递归思想。学习递归–>养成良好的思考方式。
2025-02-19 17:56:20
528
原创 代码随想录day13| 二叉树理论基础|二叉树的定义
二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存// 定义二叉树节点类int val;// 节点的值// 左子节点// 右子节点// 构造函数二叉树的应用使用较多的思想是递归,后续着重学习递归思想。
2025-01-12 11:14:49
807
原创 代码随想录day11 |150. 逆波兰表达式求值
根据 逆波兰表示法,。有效的运算符包括 + , - , * , /。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, " * "]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”]
2025-01-11 12:02:42
283
原创 代码随想录算法训练营Day10|栈与队列理论基础 | 232.用栈实现队列 | 1047. 删除字符串中的所有相邻重复项
是先进先出是先进后出。
2024-12-29 11:50:57
1565
原创 代码随想录算法训练营Day09|151.翻转字符串里的单词|卡码网:55.右旋转字符串| 字符串:总结篇
不要使用辅助空间,空间复杂度要求为O(1)1.移除多余空格2.将整个字符串反转3.将每个单词反转逻辑很简单,从前向后遍历,遇到空格了就erase。但一个erase本来就是O(n)的操作。erase操作上面还套了一个for循环,那么以上代码移除冗余空格的代码复杂度为O(n^2)。那么如果使用双指针法来移除空格,最后resize(重新设置)一下字符串的大小,就可以做到O(n)的时间复杂度。使用 removeSpace 方法。这一步生成一个清理后的 StringBuilder。
2024-12-26 15:15:44
788
原创 代码随想录算法训练营Day08|344.反转字符串| 541. 反转字符串II |替换数字
这段代码通过分段反转字符,实现了题目要求的功能。每个 2k 长度的块中,反转前 k 个字符,剩余部分不动。它的时间复杂度为 O(n),空间复杂度为 O(1),是一个高效的解决方案。
2024-12-22 16:33:42
626
原创 代码随想录算法训练营Day07| 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。输出:2。
2024-12-22 14:23:36
1630
原创 代码随想录算法训练营Day06|哈希表理论基础|242.有效的字母异位词| 349. 两个数组的交集|202. 快乐数|1.两数之和
当遇到了要。
2024-12-17 17:36:36
757
原创 代码随想录算法训练营day4|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、160.链表相交、142.环形链表II
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换(改变指针指向)。两两交换:奇数个结点 :最后一个结点就可以不做处理;偶数结点:刚好两两交换。初始时,cur指向虚拟头结点,然后进行如下三步:操作之后,链表如下:= null)这里&&前后的顺序不能变,以防止空指针异常。先判断cur.next!= null 然后再判断 cur.next.next!= null。
2024-12-16 20:19:55
1560
原创 代码随想录算法训练营day3|链表理论基础、203.移除链表元素、707.设计链表、206.反转链表
/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)
2024-12-13 18:35:55
605
原创 代码随想录算法训练营打卡day2 |209.长度最小的子数组、59.螺旋矩阵、58. 区间和、44. 开发商购买土地
填充当前圈的顶部,从 startY 开始,直到 n - offset,每次填充时,将当前 count 的值填入 nums[startX][j],然后 count++。填充当前圈的右侧列,从 startX 到 n - offset,填充时逐行向下填充,依次填充 nums[i][j]。划分的方式可以是横向或纵向。生成一个大小为 n x n 的螺旋矩阵,矩阵中的数字按顺时针螺旋顺序填充,从 1 开始,直到 n^2。由于矩阵是螺旋状填充的,因此,每一圈的填充都会处理矩阵的一部分,直到处理完所有圈。
2024-12-12 20:30:12
761
原创 代码随想录算法训练营打卡day1 |704. 二分查找、27. 移除元素、977.有序数组的平方
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]输入:nums = [-1,0,3,5,9,12], target = 2。
2024-12-11 22:00:07
259
原创 Java基础 DAY13
IDEA、包、访问修饰符、封装、继承、方法重写、多态(向上/下转型)、动态绑定机制、equals、hashcode、toString、finalize、断点调试
2022-10-04 20:39:41
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人