LeetCode(力扣) 刷题
文章平均质量分 62
基础70题,数据结构+算法
定义小花
这个作者很懒,什么都没留下…
展开
-
P11【力扣+知识点】【算法】【递归】C++版
F(n) = F(n - 1) + F(n - 2),其中 n > 1。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。开始,后面的每一项数字都是前面两项数字的和。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。表示)形成的序列称为。原创 2024-06-01 16:43:59 · 285 阅读 · 0 评论 -
P10【力扣+知识点】【算法】【滑动窗口】C++版
任意长度为 2 的子字符串都包含 2 个元音字母。的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。如果不存在符合条件的子数组,返回。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。原创 2024-05-29 16:28:15 · 329 阅读 · 0 评论 -
P9 【力扣+知识点】【算法】【二分查找】C++版
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。或者返回索引 5, 其峰值元素为 6。3 是峰值元素,你的函数应该返回其索引 2。你的函数可以返回索引 1,其峰值元素为 2;峰值元素是指其值严格大于左右相邻值的元素。,如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。给你一个满足下述两条属性的。你必须实现时间复杂度为。的算法来解决此问题。原创 2024-05-28 11:10:50 · 928 阅读 · 0 评论 -
P8【力扣+知识点】【算法】【双指针】C++版
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。每艘船最多可同时载两人,但条件是这些人的重量之和最多为。来表示链表尾连接到链表中的位置(索引从 0 开始)。4 艘船分别载 (3), (3), (4), (5)3 艘船分别载 (1, 2), (2) 和 (3)如果链表中有某个节点,可以通过连续跟踪。仅仅是为了标识链表的实际情况。,每艘船可以承载的最大重量为。承载所有人所需的最小船数。1 艘船载 (1, 2),判断链表中是否有环。给你一个链表的头节点。原创 2024-05-27 10:16:56 · 493 阅读 · 0 评论 -
P7【力扣215,692】【数据结构】【堆heap】C++版
"the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,3.将rec容器按照键值的大小进行降序排序,若键值相等,按字母的字典序排序。"i" 和 "love" 为出现次数最多的两个单词,均为2次。1.先创建哈希表,键key为字母,值value为字母出现的次数。注意,按字母顺序 "i" 在 "love" 之前。请注意,你需要找的是数组排序后的第。个最大的元素,而不是第。个出现次数最多的单词。原创 2024-05-26 14:20:59 · 762 阅读 · 0 评论 -
P7【知识点】【数据结构】【堆heap】c++版
堆(Heap)通常不是通过标准库直接提供的特定数据结构,但通常我们指的是优先队列(),它通常使用堆(特别是最大堆)来实现。此外,C++ STL(标准模板库)也提供了。等函数来在任意数组或容器中模拟堆的行为。【215】数组中第k个最大的元素。【692】前k个高频单词。原创 2024-05-22 11:31:38 · 252 阅读 · 0 评论 -
P6【力扣144,94,145】【数据结构】【二叉树遍历】C++版
从根节点开始遍历,并将根节点入栈,再遍历他的左子树,并依次入栈,直到该结点没有左子树。判断这个结点是否有右子树,如果没有,则将该结点弹出栈,并记录结点值。如果有则继续从他的右子树进行遍历,同时记录该结点的右子树是否遍历过,如果遍历过,则弹栈并记录结点值。时间复杂度:O(N)每个结点会遍历一次且只遍历一次。空间复杂度:O(N)栈至多会存放所有树节点。原创 2024-05-22 10:59:33 · 566 阅读 · 0 评论 -
P6【知识点】【数据结构】【树tree】C++版
普通二叉树:每个结点最多两个孩子满二叉树:除了叶子结点,每个节点都有两个孩子,且叶子节点在同一层上完全二叉树:从树的根节点,从上到下,从左到右依次填满节点形成的二叉树。原创 2024-05-22 08:49:57 · 238 阅读 · 0 评论 -
P5【力扣705】【数据结构】【哈希集合】C++版
/ 返回 False ,(未找到)myHashSet.contains(2);// 返回 False ,(已移除)myHashSet.contains(1);// 返回 True。// 返回 True。不使用任何内建的哈希表库设计一个哈希集合(HashSet)。时间复杂度:O(N)空间复杂度:O(N)原创 2024-05-21 11:15:25 · 211 阅读 · 0 评论 -
P5【知识点】【数据结构】【哈希表unordered_set】C++版
哈希集合内部使用哈希表来存储元素。哈希表通过哈希函数将元素映射到数组的某个位置(桶),从而可以快速地进行插入、删除和查找操作。:哈希集合中的元素是唯一的,即集合中不会出现重复的元素。如果尝试插入一个已存在的元素,该操作将不会有任何效果。:哈希集合中的元素是无序的,即元素的插入顺序与遍历顺序可能不同。1.访问(Access) 不支持。2.搜索(Search)3.插入(Insert)4.删除(delete)原创 2024-05-21 10:52:35 · 320 阅读 · 0 评论 -
P4【力扣217,389,496】【数据结构】【哈希表】C++版
随机重排,然后在随机位置添加一个字母。如果数组中每个元素互不相同,返回。如果任一值在数组中出现。'e' 是那个被添加的字母。,它们只包含小写字母。时间复杂度:O(N)空间复杂度:O(N)原创 2024-05-20 13:01:28 · 637 阅读 · 1 评论 -
P4【知识点】【数据结构】【哈希表】C++版
此博客参考。原创 2024-05-20 11:56:19 · 859 阅读 · 0 评论 -
P3【力扣20,496】【数据结构】【栈Stack】C++版
2.从队列取出队头元素,与栈顶元素对比,当栈顶元素大于对头元素,将栈顶元素存放在curMax,然后弹出栈顶元素。继续比较,只要栈顶元素大于队头元素,就更新curMax,直到栈顶元素等于对头元素;从零开始遍历每个字符并判断该字符与栈顶元素是否括号对应,如果是则弹出栈顶元素,否则存放到栈。- 2 ,用加粗斜体标识,nums2 = [1,3,4,- 4 ,用加粗斜体标识,nums2 = [1,2,3,- 4 ,用加粗斜体标识,nums2 = [1,3,不存在下一个更大元素,所以答案是 -1。原创 2024-05-19 17:38:52 · 781 阅读 · 1 评论 -
P3【知识点】【数据结构】【栈Stack】C++讲解
1.访问元素(Access) O(1)访问栈顶元素。4.删除元素(delete)O(1) 栈顶元素。2.搜索元素(Search)O(N)3.插入元素(insert)O(1)【496】下一个更大得元素I。原创 2024-05-19 16:22:33 · 398 阅读 · 1 评论 -
P2【练习力扣933】【数据结构】【队列queue】C++版
,范围是 [-2900,100],返回 2。],范围是 [-2999,1],返回 1。],范围是 [1,3001],返回 3。],范围是 [2,3002],返回 3。类来计算特定时间范围内最近的请求。的调用都使用比之前更大的。原创 2024-05-18 15:00:39 · 568 阅读 · 0 评论 -
P2【知识点】【数据结构】【队列queue】C++版
此数据结构适用于FIFO技术,其中FIFO表示先进先出。首先插入的元素将首先被提取,依此类推。有一个称为“前”的元素,它是位于最前位置或位于第一个位置的元素,也有一个名为“后”的元素,它是位于最后位置的元素。在普通队列中,元素的插入在尾部,而删除则从前面开始。ss.empty()队列为空返回true,否则返回false。【933】最近的请求次数。【239】滑动窗口最大值。原创 2024-05-18 13:38:59 · 323 阅读 · 0 评论 -
P1【练习力扣203,206】【数据结构】【链表LinkedList】C++版
总结:应理解dummy_Node的含义,指向头结点的哑节点。原创 2024-05-18 12:57:24 · 322 阅读 · 0 评论 -
P1【知识点】【数据结构】【链表LinkedList】C++版
需要注意的是,在具体实现的时候,需要先暂存C结点的指针,先将其赋值给F结点指针,然后再将F结点的地址赋值给C结点的指针,否则会丢失D结点的地址,链表就会在此处断开。链表类list的声明如下,主要实现了以下操作。假如需要在C结点后面插入F结点,只需要使C结点的指针指向F,F结点的指针指向结点D即可,如图所示。删除操作需要注意的是,每个结点都是通过new在堆区申请的内存,因此删除节点需要手动释放其内存。假如需要删除D结点,则直接让C结点的指针指向E结点即可,如图所示。【203】移除链表元素。原创 2024-05-17 09:56:57 · 1199 阅读 · 0 评论 -
P0【练习力扣485,283,27】【数据结构】【数组Array】C++版
你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。元素的顺序可能发生改变。中的前两个元素均为 2。,编写一个函数将所有。原创 2024-05-16 09:58:13 · 257 阅读 · 1 评论 -
P0【知识点】【数据结构】【数组Array】讲解C++版
大O表示法 O(1) < O(logN) < O(N) < O(NlogN) < O(N^2) < O(2^N)at() 这个方法返回的是一个引用,可以吧一个常量 int 赋值给它。数组索引(Access):是通过数组的下标去找这个元素。大O表示法 O(1) < O(N) < O(N^2)数组搜索(Search):是找这个元素的位置(索引)3.插入 Insert O(N)4.删除 Delete O(N)1.访问access O(1)2.搜索search O(N)【485】最大连续1的个数。原创 2024-05-16 08:54:08 · 294 阅读 · 0 评论