- 博客(63)
- 收藏
- 关注
原创 543.二叉树的直径
给你一棵二叉树的根节点,返回该树的。二叉树的是指树中任意两个节点之间最长路径的。这条路径可能经过也可能不经过根节点root。两节点之间路径的由它们之间边数表示。
2025-03-05 15:20:52
142
原创 数据结构:二叉树
最常见的二叉树就是类似链表那样的链式存储结构,每个二叉树节点有指向左右子节点的指针,这种方式比较简单直观。我们说的满二叉树,按理说应该翻译成 Full Binary Tree 对吧,但其实不是,满二叉树的定义对应英文的 Perfect Binary Tree。二叉树的层序遍历,顾名思义,就是一层一层地遍历二叉树。知道节点的层数是个常见的需求,比方说让你收集每一层的节点,或者计算二叉树的最小深度等等。那么假设,如果每条树枝的权重和可以是任意值,现在让你层序遍历整棵树,打印每个节点的路径权重和,你会怎么做?
2025-03-04 16:42:09
710
原创 数据结构:哈希表
1、为什么我们常说,哈希表的增删查改效率都是 O(1)?因为哈希表底层就是操作一个数组,其主要的时间复杂度来自于哈希函数计算索引和哈希冲突。只要保证哈希函数的复杂度在 O(1),且合理解决哈希冲突的问题,那么增删查改的复杂度就都是 O(1)。2、哈希表的遍历顺序为什么会变化?因为哈希表在达到负载因子时会扩容,这个扩容过程会导致哈希表底层的数组容量变化,哈希函数计算出来的索引也会变化,所以哈希表的遍历顺序也会变化。3、哈希表的增删查改效率一定是 O(1)O(1) 吗?
2025-03-03 15:11:38
921
原创 739.每日温度
给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。
2025-03-03 11:03:09
164
原创 155.最小栈
设计一个支持pushpoptop操作,并能在常数时间内检索到最小元素的栈。实现MinStackMinStack()void pop()int top()
2025-03-03 10:01:12
113
原创 496.下一个更大元素
nums1中数字x的是指x在nums2中对应位置的比x大的元素。给你两个的数组nums1和nums2,下标从开始计数,其中nums1是nums2的子集。对于每个,找出满足的下标j,并且在nums2确定nums2[j]的。如果不存在下一个更大元素,那么本次查询的答案是-1。返回一个长度为的数组ans作为答案,满足ans[i]是如上所述的。
2025-03-02 16:52:48
223
原创 23.合并 k 个有序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。链表数组如下:1->4->5,1->3->4,2->6将它们合并到一个有序链表中得到。
2025-02-26 15:14:57
217
原创 字符串函数substr
substr是 C++ 标准库中string类的成员函数,用于从字符串中提取子字符串。它的基本作用是返回从指定位置开始的子字符串。
2025-02-26 10:08:33
219
原创 数据结构:哈希表(unordered_map)
是 C++ 标准库中的一种哈希表实现,它提供了基于键值对(key-value)的存储,提供了常数时间复杂度的查找、插入和删除键值对的操作。另外,在C++哈希表中,如果被访问的是一个不存在的键,它会自动创建这个键,对应的值时默认构造的值。
2025-02-21 15:15:00
279
原创 数据结构:队列queue和栈stack
queue是 C++ 标准库中的队列容器,基于先进先出(FIFO)的原则。队列适用于只允许从一端(队尾)添加元素、从另一端(队头)移除元素的场景。
2025-02-21 10:57:26
284
1
原创 数据结构:双链表list
一般情况下,我们在头部增删元素会使用双链表,因为他在头部增删元素的效率比vector高。但我们通过索引访问元素时一般会使用vector。是 C++ 标准库中的双向链表容器。
2025-02-21 10:31:39
483
原创 数据结构:动态数组vector
另外,根据数组的特性,利用索引访问元素很高效,从尾部删除元素也是很高效的;但是从中间或者头部删除或增加元素需要数据搬移,很低效。等方式来创建静态数组,但是这种方式繁琐且容易出错。我们做算法题一般使用动态数组。, 并且在刷题网站的题目给的输入一般也是。是 C++ 标准库的动态数组。在C语言中一般初学者会使用。
2025-02-21 10:15:29
482
原创 多行输入(stringstream和getline)
getline函数是 C++ 中用于从输入流中读取一行文本的函数,通常用于读取用户输入或文件中的一行数据。// 用来存储输入的文本// 提示用户输入一行文本cout << "请输入一行文本: ";// 使用 getline 从标准输入中读取一整行// 输出用户输入的内容cout << "你输入的内容是: " << line << endl;return 0;getline会读取一整行数据,直到遇到换行符(\n)为止。它不会将换行符包含在返回的字符串中。函数原型为:is:输入流对象(如。
2025-02-20 17:13:09
372
原创 入门篇:输入
变量是用来存储数据的内存位置,而数据类型则定义了存储数据的类型。是一个用于简化代码的语句,它的作用是告诉编译器你希望使用标准库中的名称而不需要加上。即标准输出流对象,通常用于向屏幕输出数据。,它是标准输入流对象,通常用于从键盘读取输入数据。C++ 提供了多种方式来控制输入输出的格式,例如。C++ 标准库的函数、类、对象等都定义在。C++的输入输出操作主要通过标准库中的。是标准输入输出流对象,它们的全名是。在这一段代码中,如果使用。C++ 的标准输出通常使用。C++ 的标准输入使用。
2025-02-20 16:54:32
352
原创 82. 删除排序链表中的重复元素 II
给定一个已排序的链表的头head删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。
2024-05-31 09:27:26
197
1
原创 2. 两数相加
给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
2024-04-26 20:57:25
268
原创 141. 环形链表
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。
2024-04-25 16:33:10
206
原创 134. 加油站
在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则它是的。
2024-04-21 17:06:31
274
原创 238. 除自身以外数组的乘积
给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O( n)时间复杂度内完成此题。
2024-04-17 09:29:45
237
原创 15. 三数之和
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。
2024-04-15 15:28:36
342
原创 11. 盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。
2024-04-12 15:56:45
312
原创 167. 两数之和 II - 输入有序数组
给你一个下标从开始的整数数组numbers,该数组已按,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是和,则。以长度为 2 的整数数组的形式返回这两个整数的下标index1和index2。你可以假设每个输入,而且你重复使用相同的元素。你所设计的解决方案必须只使用常量级的额外空间。
2024-04-11 15:29:00
408
原创 392. 判断子序列
给定字符串和,判断是否为的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
2024-04-09 16:43:56
341
原创 125. 验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。"amanaplanacanalpanama" 是回文串。在移除非字母数字字符之后,s 是一个空字符串 ""。由于空字符串正着反着读都一样,所以是回文串。"raceacar" 不是回文串。字母和数字都属于字母数字字符。
2024-04-08 15:35:13
192
原创 13. 罗马数字转整数
罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。
2024-03-26 20:25:33
273
原创 274. H 指数
给你一个整数数组citations,其中表示研究者的第i篇论文被引用的次数。计算并返回该研究者的 h。根据维基百科上h代表“高引用次数” ,一名科研人员的h是指他(她)至少发表了h篇论文,并且有h篇论文被引用次数大于等于h。如果h有多种可能的值,h是其中最大的那个。
2024-03-22 15:12:57
384
原创 45. 跳跃游戏 II
给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。
2024-03-21 16:07:27
530
原创 55. 跳跃游戏
给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。
2024-03-16 14:36:53
278
原创 122. 买卖股票的最佳时机 II
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。
2024-03-14 15:50:58
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人