LeetCode刷题日常
HyunA的迷妹
这个作者很懒,什么都没留下…
展开
-
[简单]LeetCode 1614. 括号的最大嵌套深度
all right 这个题目真的很长,一句话总结:最大括号深度。这题想复杂了。。想到了+ - * /的优先级排序。。入栈出栈括号配对(这个想对了)。。另外还去定义了栈。。whatever。原创 2023-06-10 00:03:58 · 119 阅读 · 0 评论 -
[简单]LeetCode 剑指 Offer 06. 从尾到头打印链表
有点像前边儿的反转链表,但是这里是用数组返回。这样的话用栈来做就可以了。首先创建一个数组stack,将原数组压入栈中。然后再创建一个数组ret,将stack的元素按顺序出栈保存在ret里,即可实现从尾到头。此处记得free前面的stack。原创 2023-06-08 23:44:48 · 86 阅读 · 0 评论 -
[中等]LeetCode 24. 两两交换链表中的节点
前面刷的一道题叫反转链表,用到了递归,这题也可以使用递归。其实递归有个特点,想的越细越难懂。就看整个题目,能否分割成一个小步骤,一直在重复这个步骤那就可以考虑递归。就相当于抽象成f(x)。阶乘都知道吧?此处引用@英雄哪里出来 星球的文章中的部分截图(侵删)什么叫递归?就是递推+回归组成的。回到本题,如果链表是偶数长度的话,两个结点的交换是独立的,不会影响其他结点,那么这就可以使用递归。假设整个链表除了头结点和头结点的下一个结点没有交换,其余的都交换完了,这样就可以写出来了。原创 2023-06-07 23:28:18 · 81 阅读 · 0 评论 -
[中等]LeetCode 237. 删除链表中的节点
本题只能获取到node后面的结点,正常来说删除操作需要能够获取到node的前驱结点。这可咋办?将node的下一个结点的值赋给node,然后删除掉node的下一个结点。相当于删除掉了node。如果觉得难理解请看这句话:如何让自己在世界上消失,但又不死?——将自己完全变成另外一个人,再杀了那个人就行了。——摘自LeetCode评论区。原创 2023-06-07 21:12:53 · 77 阅读 · 0 评论 -
[简单]LeetCode 206. 反转链表
第一反应还是用双指针来写,不过测试用例报错了奥。。原创 2023-06-07 00:07:08 · 46 阅读 · 0 评论 -
[中等]LeetCode 19. 删除链表的倒数第 N 个结点
创建快慢指针。快指针在慢指针后面n个位置。当快指针指向尾结点的下一个结点即为NULL的时候,慢指针指向的刚好是倒数第n个结点。但是本题需要删除倒数第n个结点,所以慢指针应该指向倒数第n个结点的前驱结点。因此快指针还需要往后走一个位置,这样当快指针到NULL的时候,慢指针刚好在倒数第n个结点的前驱结点。此时将慢指针所指向的结点的下一个结点的下一个结点,赋值给慢指针所指向的结点的下一个结点(开始绕口令),其实也就是这样就可以实现删除倒数第n个结点。原创 2023-06-06 00:04:48 · 51 阅读 · 0 评论 -
[简单]LeetCode 面试题 02.02. 返回倒数第 k 个节点
这题用双指针做就很快了,找出倒数第k个节点,那么两个指针只需要间隔k个位置,当快指针指向最后一个节点的下一个节点,即NULL时,慢指针就指向了倒数第k个节点。直接返回即可。原创 2023-06-05 21:59:27 · 94 阅读 · 1 评论 -
[简单]LeetCode 2011. 执行操作后的变量值
看到题目给出的参数,其中有一个 char **是二维数组。看到这个就慌了,不熟悉。这题本身逻辑很简单,但一开始使用的判断是operations[i]=='X++'这样的,大错特错!没把二维数组放在眼里!正确做法是operation[i][j]这样的写法。我们来看X++、++XX–、–X这两类中间的元素都是+或者-,于是乎就可以使用这个来作为区分判断。原创 2023-06-04 22:14:12 · 122 阅读 · 1 评论 -
[简单]LeetCode 剑指 Offer 05. 替换空格
这个题用c解的话需要注意:c语言中的字符串其实是字符数组+‘\0’,所以不可以直接将空格替换成’%20’。原本字符串最大长度是10000,因此最坏情况下替换后长度为30000+1(结束符)的长度。因此需要malloc的内存大小为sizeof(char)*30001。原创 2023-06-04 20:57:44 · 92 阅读 · 1 评论 -
[简单]LeetCode 2535. 数组元素和与数字和的绝对差
一开始是这样写的,因为测试用例都是两位数的所以能通过,但是如果是3、4位数那就出错了!!原创 2023-06-04 15:21:02 · 153 阅读 · 0 评论 -
[简单]LeetCode 27.移除元素
这道题目有个知识点:在函数里修改输入数组对于调用者是可见的。这个点我印象非常深刻。去年在用c刷题的时候就着重理解了一波这个问题。题目给的解释已经非常清晰明了了,这里不做过多赘述。这道题第一反应就是可以将==val的元素和末尾进行交换。但是如果测试用例的末尾元素也是val那不就翻车了奥?!所以这里需要使用到while,如果nums[i]==val并且i<numSize的时候,我们继续进行末尾元素交换。但是在上一回操作的时候numSize已经自减了,所以第二回其实是在和倒数第二个元素进行交换。原创 2023-06-04 13:30:52 · 91 阅读 · 0 评论 -
[简单]LeetCode 1464.数组中两元素的最大乘积
找到最大和第二大的两个数,再去做计算。有两种方法:第一种:直接使用qsort排序,最后两个数就是最大和第二大的数字。第二种:遍历比较,再用两个变量去保存。原创 2023-06-03 12:19:26 · 105 阅读 · 0 评论 -
[简单]LeetCode 2351.第一个出现两次的字母
Java的HashSet真方便,C语言的话这个题就复杂些了,温故知新哈希表。原创 2023-04-05 12:58:21 · 78 阅读 · 1 评论