C++练手
cynicism??
这个作者很懒,什么都没留下…
展开
-
力扣刷题-9.回文数
从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。是指正序(从左向右)和倒序(从右向左)读都是一样的整数。从右向左读, 为 01。因此它不是一个回文数。你能不将整数转为字符串来解决这个问题吗?是一个回文整数,返回。原创 2024-09-21 17:35:30 · 316 阅读 · 0 评论 -
力扣刷题28. 找出字符串中第一个匹配项的下标
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。原创 2024-08-03 09:34:35 · 362 阅读 · 0 评论 -
力扣刷题35.搜索查找位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。原创 2024-07-12 10:02:06 · 277 阅读 · 0 评论 -
力扣刷题-228.汇总区间
的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于。列表中的每个区间范围。原创 2024-07-12 09:49:53 · 417 阅读 · 0 评论 -
力扣刷题-222.完全二叉树的节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。,求出该树的节点个数。原创 2024-07-11 14:42:02 · 190 阅读 · 1 评论 -
力扣刷题-112.路径总和
不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。(1 --> 2): 和为 3。(1 --> 3): 和为 4。和一个表示目标和的整数。是指没有子节点的节点。原创 2024-07-11 14:16:27 · 178 阅读 · 0 评论 -
力扣刷题100.相同的树
采用递归方式进行判断,若p的每一个值完全等于q的每一个值,那么两树直接相等。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。,编写一个函数来检验这两棵树是否相同。给你两棵二叉树的根节点。原创 2024-03-14 16:39:01 · 383 阅读 · 0 评论 -
力扣刷题104.二叉树的最大深度
是指从根节点到最远叶子节点的最长路径上的节点数。原创 2024-03-12 11:13:10 · 186 阅读 · 0 评论 -
力扣刷题155.最小栈
-> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。好难啊好难啊,看了题解才会写。原创 2024-03-12 10:45:36 · 211 阅读 · 0 评论 -
58.最后一个单词的长度
从后往前搜索,遇到第一个空格就跳出,并输出此时已经有了的字符串格式。,由若干单词组成,单词前后用一些空格字符隔开。是指仅由字母组成、不包含任何空格字符的最大子字符串。最后一个单词是长度为6的“joyboy”。最后一个单词是“World”,长度为5。最后一个单词是“moon”,长度为4。原创 2024-03-07 09:04:55 · 496 阅读 · 0 评论 -
力扣刷题61.旋转链表
这样我们可以知道,新链表的最后一个节点为原链表的第 (n−1)−(k mod n)(n - 1) - (k \bmod n)(n−1)−(kmodn) 个节点(从 000 开始计数)。然后我们找到新链表的最后一个节点(即原链表的第 (n−1)−(k mod n)(n - 1) - (k \bmod n)(n−1)−(kmodn) 个节点),将当前闭合为环的链表断开,即可得到我们所需要的结果。特别地,当链表长度不大于 111,或者 kkk 为 nnn 的倍数时,新链表将与原链表相同,我们无需进行任何处理。原创 2024-03-06 19:17:21 · 191 阅读 · 0 评论 -
力扣刷题-82.删除排序链表中的重复元素
如果当前 cur.next\textit{cur.next}cur.next 与 cur.next.next\textit{cur.next.next}cur.next.next 对应的元素不相同,那么说明链表中只有一个元素值为 cur.next\textit{cur.next}cur.next 的节点,那么我们就可以将 cur\textit{cur}cur 指向 cur.next\textit{cur.next}cur.next。删除原始链表中所有重复数字的节点,只留下不同的数字。原创 2024-03-05 21:46:32 · 329 阅读 · 0 评论 -
力扣刷题19.删除链表的倒数第N个结点
首先创建一个新链表,把删除的位置从左到右进行递增,再将原链表的元素一个个倒序放入链表中,最终一个个返回新的反转链表。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。原创 2024-03-04 10:33:30 · 245 阅读 · 0 评论 -
力扣138.随机链表的复制
遍历该链表的过程中,我们检查「当前节点的后继节点」和「当前节点的随机指针指向的节点」的创建情况。注意一个节点可能被多个其他节点指向,因此我们可能递归地多次尝试拷贝某个节点,为了防止重复拷贝,我们需要首先检查当前节点是否被拷贝过,如果已经拷贝过,我们可以直接从哈希表中取出拷贝后的节点的指针并返回即可。对于当前节点,我们首先要进行拷贝,然后我们进行「当前节点的后继节点」和「当前节点的随机指针指向的节点」拷贝,拷贝完成后将创建的新节点的指针返回,即可完成当前节点的两指针的赋值。返回复制链表的头节点。原创 2024-03-01 15:59:06 · 1802 阅读 · 0 评论 -
力扣刷题21.合并两个有序数列
新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。原创 2024-02-29 12:23:52 · 177 阅读 · 0 评论 -
力扣刷题2.两数相加
具体而言,如果当前两个链表处相应位置的数字为 n1,n2n1,n2n1,n2,进位值为 carry,则它们的和为 n1+n2+carry;此外,如果链表遍历结束后,有 carry>0,还需要在答案链表的后面附加一个节点,节点的值为 carry,即向高位加1,由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。首先默认的单向链表中每个链表有当前的值val,下一刻链表指向的指针位置next。如果两个链表的长度不同,则可以认为长度短的链表的后面有若干个 000。原创 2024-02-28 10:47:43 · 143 阅读 · 0 评论 -
力扣刷题-141.环形链表
使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。首先第一点: fast指针一定先进入环中,如果fast 指针和slow指针相遇的话,一定是在环中相遇,这是毋庸置疑的。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢?指针再次到达,则链表中存在环。可以画一个环,然后让 fast指针在任意一个节点开始追赶slow指针。原创 2024-02-28 09:33:43 · 280 阅读 · 0 评论 -
力扣刷题48.旋转图像
旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。只会暴力解法,依次对元素进行交换。使用另一个矩阵来旋转图像。原创 2024-02-27 21:08:52 · 374 阅读 · 0 评论 -
力扣刷题20.有效的括号
题目要求要用栈的形式,所以先创建一个空栈用来存入相对应的括号,之后根据不同的输入进行入栈操作,学了一下栈。,判断字符串是否有效。原创 2024-02-23 09:49:47 · 422 阅读 · 0 评论 -
力扣刷题-219.存在重复元素
哈希表的使用,继续练习unordered的使用方法,逻辑比较简单。,判断数组中是否存在两个。原创 2024-02-22 10:03:06 · 868 阅读 · 0 评论 -
力扣刷题-202.快乐数
注意:此题不建议用集合记录每次的计算结果来判断是否进入循环,因为这个集合可能大到无法存储;另外,也不建议使用递归,同理,如果递归层次较深,会直接导致调用栈崩溃。使用 “快慢指针” 思想,找出循环:“快指针” 每次走两步,“慢指针” 每次走一步,当二者相等时,即为一个循环周期。此时,判断是不是因为 1 引起的循环,是的话就是快乐数,否则不是快乐数。但是实际上可以用循环去求解,因为迭代次数不会超过9*9*10次,这道题我看到题解,学到了快慢指针思想,非常优雅的代码。编写一个算法来判断一个数。原创 2024-02-21 09:01:56 · 392 阅读 · 0 评论 -
力扣刷题-1.两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。直接用哈希表,因为是几数之和,所以先减去某一个数,存储其位置指针,之后依次迭代。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。原创 2024-02-20 09:14:15 · 234 阅读 · 0 评论 -
力扣刷题-49.字母异位词分组
其次得出第一个字符串出现字母的键值,按照键值对其进行排序,用emplace_back在字符串尾插入元素。建立哈希表mp unordered_map<string, vector<string>> mp;是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。最后用vector模板类得到最终输出数组。其中的映射关系是两个字符串数组。给你一个字符串数组,请你将。原创 2024-02-19 08:50:40 · 434 阅读 · 0 评论 -
力扣刷题-242.有效的字母异位词
题目描写的比较简单,首先可以想到采用for循环的方式将出现的字母个数依次记录然后比较,但是这是哈希表专题,查阅资料发现record函数可以使用,方法是:record[array[s] - 'char'].于是依次记录个数进行减运算,不为0则不满足题目要求。中每个字符出现的次数都相同,则称。,编写一个函数来判断。原创 2024-02-19 08:31:54 · 394 阅读 · 0 评论 -
力扣刷题-290.单词规律
首先分析题目要求用哈希表,然后学会了用map形式:map<type1,type3>map。之后在两个表里搜寻输入的字母是否可以从哈希表中找到对应的单词来构成。中的每个非空单词之间存在着双向连接的对应规律。最后当单词多于字母时(测试用例),默认为可以。里的每个字母和字符串。是否遵循相同的规律。原创 2024-02-18 08:15:08 · 539 阅读 · 0 评论 -
力扣刷题-383.赎金信
预备知识1:auto与const指针的结合用法。原创 2024-02-14 11:22:19 · 326 阅读 · 0 评论 -
力扣刷题54-螺旋矩阵
比较难想代码实现,参考题解的,注释比较详细。,返回矩阵中的所有元素。原创 2024-02-14 10:55:32 · 425 阅读 · 0 评论 -
力扣36.有效的数独
学到的:check[board[i][j] - '1']用来表示索引上出现的次数。,验证已经填入的数字是否有效即可。好好好,一道数独做一天。原创 2024-02-09 14:59:02 · 527 阅读 · 0 评论 -
力扣刷题-167.两数之和
利用双指针,逻辑比较简单,但是写出来费劲,左右相加依次递减遍历答案。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。如果设这两个数分别是。的形式返回这两个整数的下标。以长度为 2 的整数数组。重复使用相同的元素。原创 2024-02-09 10:13:45 · 526 阅读 · 0 评论 -
力扣刷题-392.判断子序列
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。其次从第一个字符开始,所有的字符都在s中的序列才是子序列,逻辑清晰。首先空字符串是所有非空字符串的子序列。原创 2024-02-08 09:32:22 · 641 阅读 · 0 评论 -
力扣刷题-13.罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。给定一个罗马数字,将其转换成整数。这个..笨比解法就不多解释了。,即为两个并列的 1。原创 2024-02-07 10:05:49 · 356 阅读 · 0 评论 -
力扣刷题-135.分发糖果
首先要发最少,设置在发工资和第一个最小之间取最小值。请你给每个孩子分发糖果,计算并返回需要准备的。若没有凹点,也就是周围都一样评分,那么众生平等。更新每一个人发的,最后将各个局部最小值求和。若后面的大于前面的,则后加1,反之前加1。妙啊,又名资本家发工资算法。表示每个孩子的评分。原创 2024-02-07 09:31:47 · 317 阅读 · 0 评论 -
力扣刷题-238.除自身以外数组的乘积
最后代码逻辑就是先将前积算出来,并且存在ans【】中,然后再算后积,非常高明的一种策略。其次学会了vector创建数组,也就是vec array(m,n)首先不让用除法,也就排除都乘起来除以当前值的可能。之中任意元素的全部前缀元素和后缀的乘积都在。之外其余各元素的乘积。时间复杂度内完成此题。原创 2024-02-06 10:32:12 · 469 阅读 · 0 评论 -
力扣刷题-o(1)时间插入,删除和获取
越来越离谱了...同样的逻辑会不一样的结果。你必须实现类的所有函数,并满足每个函数的。hh之后就好写很多了。原创 2024-02-05 10:25:11 · 470 阅读 · 0 评论 -
力扣刷题-274.H指数
ok所以首先对数组进行顺序排序,然后找到中位数,也就是符合题目的h的值,之后再遍历寻找大于h的次数就可以了。先吐槽题目,本来我以为是看发表论文的次数和引用指数相等的意思,但是翻译令我欲仙欲死。篇论文被引用的次数。计算并返回该研究者的 h。代表“高引用次数” ,一名科研人员的。篇论文被引用次数大于等于。是指他(她)至少发表了。原创 2024-02-04 10:10:23 · 298 阅读 · 0 评论 -
力扣刷题-55.跳跃游戏
代码逻辑为从后往前不断遍历,直到发现走的路到0为止,且走过的路大于1,说明跳跃成功(其实是取巧了,因为只用输出bool类型,所以不用管中间是怎么走的,且可以直接跨过第一个)数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。原创 2024-02-03 10:06:03 · 631 阅读 · 0 评论 -
力扣刷题-122,买股票(2)
在每一天,你可以决定是否购买和/或出售股票。思路简单,先买再看,低则买进,高则卖出。你也可以先购买,然后在。原创 2024-02-02 16:08:57 · 292 阅读 · 0 评论 -
力扣刷题-121.买卖股票的最佳时机
okok代码思路是设计两个值,用来搜索最小值和最大值,或者说局部最大或局部最小,之后不减去得到利润,然后不断比较得到最大的值。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。原创 2024-02-02 16:04:12 · 283 阅读 · 0 评论 -
力扣刷题-80.删除有序数组中的重复项(2)
代码思路为,设置记录阈值2,从数组中当前元素遍历是否出现2个以上,将阈值以下的元素记录,超出删除。同时要注意测试用例中有单元素数组存在,因此不超过阈值2的数组直接输出即可,满足题目要求。删除重复出现的元素,使得出现次数超过两次的元素。并在使用 O(1) 额外空间的条件下完成。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。原创 2024-02-02 11:04:22 · 207 阅读 · 0 评论 -
力扣刷题-26删除有序数组中的重复元素
代码思路是从第一个开始遍历,发现有重复元素则跳过,只记录与当前数字不重复的元素,最后返回。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。原创 2024-02-02 10:26:56 · 437 阅读 · 0 评论