![](https://img-blog.csdnimg.cn/direct/e927d4ac42a74d97b40869e188dfbcb6.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
文章平均质量分 64
尽力的每日一题
无聊看看天T^T
事以密成,语以泄败
展开
-
Leetcode:括号生成
因为先添加的肯定是左括号,所以后添加的右括号都等于n了,那么左括号应该也满足了原创 2024-06-08 12:41:51 · 322 阅读 · 0 评论 -
Leetcode:合并两个有序链表
(其中 n 和 m 分别为两个链表的长度。递归调用 mergeTwoLists 函数时需要消耗栈空间,栈空间的大小取决于递归调用的深度。结束递归调用时 mergeTwoLists 函数最多调用 n+m 次)合并(l1,l2)等价于解决 l1->next = mergeTwoLists(l1->next, l2) 以及l2->next = mergeTwoLists(l1, l2->next)的子问题。原创 2024-06-08 11:57:08 · 377 阅读 · 0 评论 -
Leetcode:有效的括号
最坏情况下字符串s全是左括号没有右括号,此时栈的长度就是字符串s的长度原创 2024-06-07 14:11:23 · 240 阅读 · 0 评论 -
Leetcode:删除链表的倒数第N个结点
对于链表的删除要考虑头删和尾删的结果。原创 2024-06-07 09:45:15 · 290 阅读 · 0 评论 -
Leetcode:四数之和
(long) nums[i] + nums[i + 1] + nums[i + 2] + nums[i + 3] 是表达式的类型提升,有一个long则后面的所有运算均提升为long操作。类似于三数之和的解法,但需要多加一些限制,同时为了防止多个数组元素的相加之和出现整型溢出问题还要将整型转为long。(查找前两个数要两次for,查找后两个数因为有双指针同时向里走的缘故,所以只用一层for)(仍然是花费在了排序的额外空间上)原创 2024-06-06 20:41:50 · 304 阅读 · 0 评论 -
Leetcode:电话号码的字母组合
回溯的原因是用来暂存结果的容器只能push_back,pop_back,如果不pop_back就会使结果不对。所以直接使用一个定长数组暂存结果,就无需回溯,直接赋值即可。原创 2024-06-06 20:20:15 · 253 阅读 · 0 评论 -
Leetcode:最接近的三数之和
最近值即为差值的绝对值最小值原创 2024-06-05 15:21:13 · 218 阅读 · 1 评论 -
Leetcode:三数之和
(假设排序前abc的组合满足要求,且a原创 2024-06-05 14:29:27 · 485 阅读 · 1 评论 -
Leetcode:最长公共前缀
从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。用第一个字符串与后续的每个字符串进行比较,先获取S1和S2的最长公共前缀,然后将该次比较获得的最长公共前缀再与下一个字符串进行比较更新,直至循环结束。(其中 m 是字符串数组中的字符串的平均长度,n 是字符串的数量。最坏情况下,字符串数组中的每个字符串的每个字符都会被比较一次)原创 2024-06-04 12:32:45 · 349 阅读 · 0 评论 -
Leetcode:罗马数字转整数
通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,累加每个字符对应的数值即可。当前位置表示的元素的值 < 下个位置表示的元素的值,就用总数减去当前位置的值。(XXVII 可视作 X+X+V+I+I=10+10+5+1+1=27)若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。(XIV 可视作 X−I+V=10−1+5=14),否则总数加上当前位置的值。原创 2024-06-04 09:09:49 · 179 阅读 · 1 评论 -
Leetcode:整数转罗马数字
为了表示一个给定的整数 num,我们寻找不超过 num 的最大符号值,将 num 减去该符号值,然后继续寻找不超过 num 的最大符号值,将该符号拼接在上一个找到的符号之后,循环直至 num 为 0。最后得到的字符串即为 num 的罗马数字表示。(由于 valueSymbols 长度是固定的,且这 13 字符中的每个字符的出现次数均不会超过 3,因此循环次数有一个确定的上限。(由于 valueSymbols 长度是固定的,且这 13 字符中的每个字符的出现次数均不会超过 3,因此循环次数有一个确定的上限。原创 2024-06-03 16:44:03 · 555 阅读 · 1 评论 -
Leetcode:盛最多水的容器
两个指针指向的数字中较小值∗指针之间的距离。循环列举容器的大小,并留下最大的那个容器。这种写法会超出时间限制,无法通过。原创 2024-06-03 15:08:31 · 843 阅读 · 1 评论 -
Leetcode:正则表达式匹配
1、①和②可以总结为一种情况:当p[j]==s[i] 或者 p[j]==. 为真 且dp[i-1][j-1]为真(两个的末尾都匹配了 或者 p的末尾为.时无论s的末尾为什么字符都能匹配),那么dp[i][j]就为真2、③可以总结为:当 dp[i][j-2] 为真或者 (p[j-1] == '.' || p[j-1] == s[i])一个为真且 dp[i-1][j] 为真,则dp[i][j]为真。原创 2024-06-02 20:13:23 · 1087 阅读 · 1 评论 -
Leetcode:回文数
1、x为负数时永远不可能为回文数 2、x为个位数时不可能是回文数原创 2024-06-02 10:45:12 · 447 阅读 · 0 评论 -
Leetcode:字符串转换整数 (atoi)
①忽略字符串开头的空格,直到遇到第一个非空格字符为止。③继续读取数字字符,直到遇到非数字字符为止。(042的0也会读取,出去的时候会消去)符号时,它会识别这是一个负 / 正数。原创 2024-06-01 15:10:41 · 348 阅读 · 0 评论 -
Leetcode:整数反转
如果只用if(rev > INT_MAX / 10 || rev原创 2024-06-01 12:35:59 · 385 阅读 · 0 评论 -
Leetcode:Z 字形变换
新建二维数组的行数 = r,列数为 =(n / t)* (r - 1) ,即[r,(n / t)* (r - 1)]当我们在矩阵上填写字符时,会先向下填写 r 个字符,然后向右上继续填写 r−2 个字符,最后回到第一行。Z 字形变换的周期 t = r + r − 2 = 2r − 2。,每个周期会占用矩阵上的1 + (r - 2)= r − 1列。总列数 =总周期数 * (r - 1)总周期数 = n(总字符数)/ t。(一个残缺的斜着的v)原创 2024-05-31 21:54:45 · 405 阅读 · 0 评论 -
Leetcode:最长回文子串
先确定寻找回文字串的边界范围后从两边向中间寻找。1、记录最长回文字串的长度和起始字符的下标。(两层for循环中还有一个while)2、判断回文字串的逻辑与整体逻辑分离。原创 2024-05-31 20:22:30 · 253 阅读 · 0 评论 -
Leetcode:寻找两个正序数组的中位数
(这样计算可以保证分割线的第一个条件)原创 2024-05-30 23:35:53 · 716 阅读 · 0 评论 -
Leetcode:无重复字符的最长子串
(为了保证[left,rigth)间不会再有重复字符,如果只是left+1可能还会有重复字符)(此时[left,right)中的字符都是不重复的)原创 2024-05-30 16:00:35 · 420 阅读 · 0 评论 -
Leetcode:两数相加
逗号表达式允许多个表达式出现在同一条语句中,每个表达式用逗号分割,逗号表达式的值是最后一个表达式的值,所有表达式都会被执行原创 2024-05-29 14:19:12 · 319 阅读 · 0 评论 -
Leetcode:两数之和
hashtable[nums[i]] = i的作用是将原数组中的i下标处的数字nums[i]作为键,下标i作为值,如果键存在就更新,键不存在就插入原创 2024-05-28 14:40:55 · 443 阅读 · 0 评论 -
Leetcode:找出峰值
用于向数组尾部插入新元素用于向数组中得某个位置进行插入,需要传入要插入位置得迭代器只能访问和修改已有元素,不能用于插入元素。原创 2024-05-28 09:45:07 · 422 阅读 · 0 评论 -
OJ练习册
在这里我们可以发现当数组旋转六次时的情况与数组旋转一次时的情况是一样的,即使旋转次数可以随意增加,但是实际上它们旋转后的结果与旋转1、2、3、4、5次是没有区别的,所以为了减少代码执行时间我们利用取余的办法获取数组的真实旋转次数:k = k % numSize,其中k为数组旋转次数,numSize为数组实际长度。令完整数组与不完整数组进行异或运算,两个数组中的数字基本都是两两配对的,它们异或后的结果都为零,而两个数组异或的结果必然是那个没有成对的数字,它就是我们要找的消失的数字。题目中给的数组是包含从。原创 2023-11-16 21:22:19 · 87 阅读 · 0 评论 -
OJ练习册
3、开始正式遍历两个旧链表,在遍历过程中需要注意的是只要有一个链表走到了头即cur1或cur2指向空那么就不能再循环了,在都没有走到头的时候,我们就判断cur1和cur2指向的结点的值的大小,如果cur1->val < cur2->val,就将此时cur1指向的结点尾插进新链表,如果cur1->val >= cur2->val,就将此时cur2指向的结点尾插进新链表(记得每次尾插过后新链表中的newTali也就负责指向新链表最后一个有效结点的指针要向后移动以便于下一次的尾插)初始时,两者都为 0。原创 2023-11-14 21:57:56 · 205 阅读 · 0 评论 -
OJ练习册
这里的可以忽视快指针quick,p1指针的作用就是为了记住p指针的下一个结点,这里的主角就是慢指针slow和p指针,先令p->next指向此时slow指向的中间结点,此时完成其中一对结点的方向逆置,接下来两个结点都向后走,先让slow指向p指针所指向的结点,然后再让p指针指向p1所指向的结点,最后p1再往后走一个结点,至此一次逆置循环结束,第二次循环与第一次循环的执行方式一样,最后结果如图二所示,第二次循环结束后。我们令pA和pB走过一样的路程即:pA走过的路程是:A的路程+NULL+B的路程;原创 2023-11-14 12:24:43 · 72 阅读 · 0 评论 -
OJ练习册
【代码】OJ练习册。原创 2023-10-19 21:17:31 · 567 阅读 · 0 评论 -
OJ练习册
包含了,通过前序遍历数组的结果构建二叉树的OJ,以及二叉树的中、后续遍历的OJ、另一颗子树的OJ原创 2023-12-10 22:01:05 · 852 阅读 · 0 评论 -
OJ记录册
1、求1+2+3+...+n要求不能用乘除法、for、while、if、else、switch、case等关键字及判断语句(A?B:C)2、计算日期到天数的转换3、日期插值4、打印日期5、累加天数6、日期题的简单模板原创 2024-03-13 17:26:50 · 282 阅读 · 0 评论 -
OJ记录册
同时从前和后两个方向寻找同一个字符,找到位置相等则该元素只出现一次,否则该元素在字符串中出现两次。从前向后找所给字符的位置。从后向前找所给字符的位置。原创 2024-03-27 00:03:12 · 696 阅读 · 0 评论 -
OJ记录册
OJ练习原创 2024-04-06 23:26:08 · 179 阅读 · 0 评论 -
判断平衡二叉树与翻转二叉树——每日练习
判断一棵树是否是平衡二叉树?翻转一颗二叉树?原创 2023-12-23 00:21:38 · 758 阅读 · 0 评论