- 博客(16)
- 收藏
- 关注
原创 代码随想录算法训练营第十八天513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树
给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。
2024-05-28 12:02:59 245
原创 代码随想录算法训练营第十六天104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。
2024-05-25 23:56:22 631
原创 代码随想录算法训练营第十三天|239.滑动窗口最大值、347.前K个高频元素、总结
给你一个整数数组nums,有一个大小为k**的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。
2024-05-20 23:13:28 328
原创 代码随想录算法训练营第十一天|20.有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。
2024-05-18 23:28:31 409
原创 代码随想录算法训练营第十天|理论基础、232.用栈实现队列、225.用队列实现栈
栈(stack):先进后出队列(queue):先进先出栈和队列是STL里面的两个数据结构,C++标准库是有多个版本的接下来介绍的都是SGI STL里面的数据结构栈的出入示意图如下:栈提供push和pop接口,不提供走访功能,也不提供迭代器栈的底层容器是可插拔的,可以控制使用哪种容器来实现栈的功能STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)栈的底层实现可以是vector、deque、list,主要是数组和链表的底层实现。
2024-05-17 23:42:38 489
原创 代码随想录算法训练营第九天|字符串总结、双指针回顾
在C语言中存储字符串的时候会把结束符’\0’存入末尾,标志字符串的结束在C++中,string类中提供了size接口,无需结束符’\0’判断字符串的结束了vector 和 string的区别在基本操作上没有区别,但是string提供了字符串处理的相关接口,比如string重载了+,而vector却没有。
2024-05-16 23:28:17 325
原创 代码随想录算法训练营第八天|344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须**修改输入数组**、使用 O(1) 的额外空间解决这一问题。
2024-05-15 23:15:58 745
原创 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组。
2024-05-14 23:21:29 679
原创 代码随想录算法训练营第六天 哈希表理论基础、242 有效的字母异位词、349 两个数组的交集、202快乐数、1. 两数之和
可以看成是一个数组来存储数据,每个数组项通过哈希函数计算出一个哈希值,这个哈希值用于数组的索引。理想情况下,每个键都映射到一个唯一的数组索引上。:是将输入转换成一个整数的函数,这个整数可以用作数组的索引。:哈希碰撞发生在两个不同的输入通过哈希函数产生相同的输出索引时。解决哈希碰撞的常见方法包括:拉链法:每个数组索引处存储一个链表,所有映射到该索引的元素都存储在这个链表中。线性探测法:当一个索引已经被占用时,算法寻找下一个空闲的索引位置。
2024-05-13 23:43:26 539
原创 代码随想录算法训练营第四天 24 两两交换链表中的节点、19 删除链表的倒数第N个节点、面试题 链表
本文介绍了四个链表相关的算法问题。首先是“两两交换链表中的节点”,通过创建虚拟头节点和定义指针进行节点交换。其次是“删除链表的倒数第N个节点”,采用双指针法,让快指针先移动n个位置,然后快慢指针一起移动,当快指针移动到null时,慢指针刚好位于待删除节点的前一个节点。第三个问题是“链表相交”,通过将链表尾部对齐,然后循环移动指针的方式来判断是否有相交的节点。最后是“环形链表II”,通过快慢指针以及一些数学理解,判断环的存在并找出环的入口。
2024-05-12 01:29:00 891
原创 代码随想录算法训练营第三天 链表理论基础、203 移除链表元素、707 设计链表、 206 反转链表
单链表的定义方式如下:链表的定义分为两步定义数据域和指针域定义构造函数(当然不写构造函数编译器也会自动生成,但是初始化的时候不太方便)// 单链表int val;// 数据域// 指针域ListNode(int x) : val(x), next(NULL){} // 节点的构造函数链表初始化该文档详细介绍了链表的理论基础,包括链表的存储方式、定义、操作、性能分析等。
2024-05-11 01:16:21 683
原创 代码随想录算法训练营第二天 977 有序数组的平方 209 长度最小的子数组 59 螺旋矩阵II
本文讨论了三个算法问题:977.有序数组的平方,209.长度最小的子数组,和59.螺旋矩阵II。对于问题977,提出了两种解决方案,一种是暴力解法,先将数组中的元素进行平方,然后再排序;另一种是双指针法。对于问题209,也提出了两种解决方案,一种是暴力解法,通过两层循环遍历所有的子数组;另一种是滑动窗口法,只需要利用一个循环来控制子数组的终止位置,起始位置根据条件自动移动。对于问题59,给出了一种解决方案,通过模拟螺旋路径填充矩阵。
2024-05-09 21:00:48 854
原创 代码随想录算法训练营第一天 704 二分查找、27 移除元素
本文介绍了两个算法问题的解决方案:704.二分查找和27.移除元素。对于704.二分查找,提供了两种解决思路,一种是暴力遍历,时间复杂度为O(n),另一种是二分查找,时间复杂度为O(log n)。对于27.移除元素,也提供了两种解决思路,一种是暴力解法,时间复杂度为O(n^2),另一种是双指针法,时间复杂度为O(n)。
2024-05-08 19:43:13 1027
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人