OJ题--链表
文章平均质量分 72
老 胡
就挺感兴趣
展开
-
C解OJ题--从尾到头打印链表(就喜欢一道题半天就能解出来,而不是一天)
发现还不会C++的Vector,这次就水一篇文章,用C来解这道OJ题。原题如下: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。分析: 本题意思就是将链表的数据从尾到头拷贝一份到数组中,返回这个数组基地址。这里提供两个思路,就不过多的分析,大家都能明白。 思路一: 计算出链表的长度,开辟数组后,将单链表的第一个结点放都数组的最后一个位置……那么最后一个结点就会放到数组第一个位置,即可完成从尾到头的拷贝。 思路二: 计算出链表的长度,开辟数组后,先将单链表进行反转原创 2021-11-22 15:50:40 · 365 阅读 · 0 评论 -
C++解OJ题--链表中倒数第K个结点(已在路上)
世界这么大,人生这么长,总会有这么一个人,让你想要温柔对待。原题如下: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。审题: 题目也还是很好理解,就是输出一个单链表的倒数第K个结点。可能给我们的单链表的情况: 1.空的单链表; 2.有多个结点,但是K的值不合理(即K的值大于链表原创 2021-11-21 16:14:07 · 772 阅读 · 0 评论 -
C++解OJ题--链表的中间结点(这次没词了)
while (life<end) {love++;}原题如下: 给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。审题? 这次就不审题了,因为题目描述得已经很清晰。链表情况题目也限制了是非空的单链表。解题思路: 利用快慢指针,快指针每次移动的结点数是慢指针的两倍,即快指针每次走两个结点,慢指针每次走一个结点。那么当快指针指向最后一个结点时,慢指针所指的位置就是单链表中间结点的位置。大家都能理解,就不分析了,直接上代码。原创 2021-11-20 20:39:43 · 809 阅读 · 0 评论 -
C++解OJ题--删除链表中的节点(不要怀疑,这就是一个脑筋急转弯)
今天这道OJ题,初看,题目怕是出错了吧!惯性思维。原题如下: 请编写一个函数,用于删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问要被删除的节点 。 题目数据保证需要删除的节点不是末尾节点 。分析: 我们平常想的是要删除一个结点,不应该要知道它的前驱结点嘛,这样好修改它的next域的信息,但是这好像不现实。 这题要表达的想法是:删除结点,不一定是删除该位置的结点,我们只需要改变当前位置结点的信息,让其转换到后面的结点进行删除,直接原创 2021-11-20 09:41:01 · 657 阅读 · 0 评论 -
C++解OJ题--回文链表(图文并茂系列)
一杯茶,一包烟,一道链表盯一天。文章目录一.反转前半部分二.反转后半部分原题如下: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?审题: 题目的描述挺简洁,但是所需要考虑的点还是挺多。那什么是回文链表?在这里就不多描述,我给出几个例子后再总结一下,如下: 只有一个结点的链表属于回文链表。 奇数个结点的链表可能属于回文链表。 偶原创 2021-11-19 17:23:06 · 950 阅读 · 0 评论 -
C++解OJ题----反转链表(这次没有递归只有迭代)
2021年的最后个把月,收拾心情,整装待发,请让我越来越忙碌吧! 解了一道OJ题,一起来看看。原题如下: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。审题: 题目描述还是挺简单的,就是给你一个单链表让它的头变尾,尾变头后,返回新的头。可能给我们的单链表情况: 1.空单链表; 2.只有一个结点的单链表; 3.有多个结点的单链表。 对于前两种情况,我们都还是很好进行处理的,只需要返回原来的头即可。现在一起来看看如何处理第三种情况。一.点不变箭头变原创 2021-11-18 11:23:20 · 627 阅读 · 0 评论 -
C++解OJ题(移除链表元素)----迭代实现与递归实现(超级详细)
人生就像愤怒的小鸟,当你失败的时候,总有几只猪再笑 。今天解了一道OJ题一起来看看吧原题如下:题目: 给你一个链表的头节点 head和一个整数 val ,请你删除链表中所有满足 Node.val == val的节点,并返回新的头节点 。审题: 通俗的来讲就是给你一个值,看这个单链表中有没有结点数据和这个值相等的,有的话删除这些结点,返回这个链表。 题目描述特别精简,但短小精悍。其实我们都知道往往这种题目就越要注意,会有坑。可能给我们的单链表情况: 1.空单链表; 2.有结点原创 2021-11-16 08:15:38 · 336 阅读 · 0 评论 -
C++解OJ题--相交链表(现实版VS浪漫版)
【过去酒逢知己千杯少,现在酒逢千杯知己少】 突然不知道怎么写开场白了,因为今天我被一个OJ题的浪漫故事给感动了,一起看看是我泪点太低还是真的浪漫。原题如下:题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 NULL。 题目数据保证整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 进阶:你能否设计一个时间复杂度 O(n) 、仅用 O(1) 内存的解决方案?先来说说我原创 2021-11-12 09:40:54 · 1100 阅读 · 0 评论 -
C++解OJ题--环形链表
害怕犯错而不去犯错才是最大的错误! 哈哈,登场的时候先抒情一下!今天又解了一道算法题,一起来看看吧原创 2021-11-10 19:36:16 · 1080 阅读 · 0 评论 -
C++解OJ题--删除排序链表中的重复元素--普通方式VS递归方式
今天尝试了两种方式解这道OJ题,惭愧的是我一开始居然把题目都审错了,大忌呀!一起来看看吧。原题如下 存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。审题:1.链表是升序的;2.删除所有重复的元素,每个元素只能出现一次;3.结果链表也是升序的。该链表可能以怎样的形式给我们:1.空链表;2.只有一个结点;3.有多个结点。 对于前两种情况我们很容易解决,关键是存在多个结点的时候,该如何处理。现在原创 2021-11-10 10:30:00 · 562 阅读 · 0 评论 -
第一次尝试解OJ题--21.合并两个有序链表
文章目录合并两个有序链表 第一次尝试解OJ题,很紧张。我选择了一道上面标识简单的OJ题,因为我怕太难怕我给劝退了。当我把这道OJ题解出来之后,还是有点小激动,都想发个朋友圈庆祝一下,但还是冷静了下来,不能太浮躁,毕竟要走的路还很长。不过写一个博客是应该的啦!合并两个有序链表 原题如下:题目是:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的。分析题干信息:1.链表是有序的;2.新链表也是有序的分析好题干信息后,来揣摩一下这两个升序链表可能存在以原创 2021-11-08 17:44:26 · 286 阅读 · 0 评论