广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现LeetCode的示例分析
  • 515
分享到

C++实现LeetCode的示例分析

2023-06-20 15:06:29 515人浏览 八月长安
摘要

这篇文章主要介绍c++实现LeetCode的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Reverse a linked list from position m to n.

这篇文章主要介绍c++实现LeetCode的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Reverse a linked list from positiom to n. Do it in one-pass.

Note: 1 ≤ m ≤ n ≤ length of list.

Example:

Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL


很奇怪为何没有倒置链表之一,就来了这个倒置链表之二,不过猜也能猜得到之一就是单纯的倒置整个链表,而这道作为延伸的地方就是倒置其中的某一小段。对于链表的问题,根据以往的经验一般都是要建一个dummy node,连上原链表的头结点,这样的话就算头结点变动了,我们还可以通过dummy->next来获得新链表的头结点。这道题的要求是只通过一次遍历完成,就拿题目中的例子来说,变换的是2,3,4这三个点,我们需要找到第一个开始变换结点的前一个结点,只要让pre向后走m-1步即可,为啥要减1呢,因为题目中是从1开始计数的,这里只走了1步,就是结点1,用pre指向它。万一是结点1开始变换的怎么办,这就是我们为啥要用dummy结点了,pre也可以指向dummy结点。然后就要开始交换了,由于一次只能交换两个结点,所以我们按如下的交换顺序:

1 -> 2 -> 3 -> 4 -> 5 -> NULL

1 -> 3 -> 2 -> 4 -> 5 -> NULL

1 -> 4 -> 3 -> 2 -> 5 -> NULL

我们可以看出来,总共需要n-m步即可,第一步是将结点3放到结点1的后面,第二步将结点4放到结点1的后面。这是很有规律的操作,那么我们就说一个就行了,比如刚开始,pre指向结点1,cur指向结点2,然后我们建立一个临时的结点t,指向结点3(注意我们用临时变量保存某个结点就是为了首先断开该结点和前面结点之间的联系,这可以当作一个规律记下来),然后我们断开结点2和结点3,将结点2的next连到结点4上,也就是 cur->next = t->next,再把结点3连到结点1的后面结点(即结点2)的前面,即 t->next = pre->next,最后再将原来的结点1和结点2的连接断开,将结点1连到结点3,即 pre->next = t。这样我们就完成了将结点3取出,加入结点1的后方。第二步将结点4取出,加入结点1的后方,也是同样的操作,这里就不多说了,请大家自己尝试下吧,参见代码如下:

class Solution {public:    ListNode *reverseBetween(ListNode *head, int m, int n) {        ListNode *dummy = new ListNode(-1), *pre = dummy;        dummy->next = head;        for (int i = 0; i < m - 1; ++i) pre = pre->next;        ListNode *cur = pre->next;        for (int i = m; i < n; ++i) {            ListNode *t = cur->next;            cur->next = t->next;            t->next = pre->next;            pre->next = t;        }        return dummy->next;    }};

以上是“C++实现LeetCode的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网其他教程频道!

--结束END--

本文标题: C++实现LeetCode的示例分析

本文链接: https://www.lsjlt.com/news/297624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现LeetCode的示例分析
    这篇文章主要介绍C++实现LeetCode的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Reverse a linked list from position m to n. ...
    99+
    2023-06-20
  • C++实现LeetCode之区间的示例分析
    这篇文章将为大家详细讲解有关C++实现LeetCode之区间的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 228.Summary Ranges 总结区间Given a so...
    99+
    2023-06-20
  • C++中LeetCode实现单独数字的示例分析
    这篇文章主要介绍了C++中LeetCode实现单独数字的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。[LeetCode] 136.Single Number 单独的...
    99+
    2023-06-20
  • C++实现LeetCode之神奇字典的示例分析
    这篇文章将为大家详细讲解有关C++实现LeetCode之神奇字典的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 676.Implement Magic Dictionary ...
    99+
    2023-06-20
  • C++实现LeetCode之替换单词的示例分析
    这篇文章主要介绍C++实现LeetCode之替换单词的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完![LeetCode] 648.Replace Words 替换单词In English, we have a...
    99+
    2023-06-20
  • C++实现LeetCode之岛屿数量的示例分析
    这篇文章主要为大家展示了“C++实现LeetCode之岛屿数量的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++实现LeetCode之岛屿数量的示例分析”这篇文章吧。[LeetCod...
    99+
    2023-06-20
  • C++实现LeetCode之包围区域的示例分析
    这篇文章将为大家详细讲解有关C++实现LeetCode之包围区域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 130. Surrounded Regions 包围区域Giv...
    99+
    2023-06-20
  • C++实现LeetCode之缺失区间的示例分析
    这篇文章给大家分享的是有关C++实现LeetCode之缺失区间的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。[LeetCode] 163. Missing Ranges 缺失区间Given a sort...
    99+
    2023-06-20
  • C++实现LeetCode之版本比较的示例分析
    小编给大家分享一下C++实现LeetCode之版本比较的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧![LeetCode] 165.Compare Ver...
    99+
    2023-06-20
  • C++实现LeetCode之加油站问题的示例分析
    这篇文章主要介绍C++实现LeetCode之加油站问题的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完![LeetCode] 134.Gas Station 加油站问题There are N ...
    99+
    2023-06-20
  • C++实现LeetCode之求最大间距的示例分析
    这篇文章主要介绍C++实现LeetCode之求最大间距的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完![LeetCode] 164. Maximum Gap 求最大间距Given an unsorted ar...
    99+
    2023-06-20
  • C++使用LeetCode实现二叉搜索树的示例分析
    这篇文章将为大家详细讲解有关C++使用LeetCode实现二叉搜索树的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Given an integer n, generate all st...
    99+
    2023-06-20
  • C++实现LeetCode之前K个高频词的示例分析
    这篇文章主要介绍了C++实现LeetCode之前K个高频词的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。[LeetCode] 692.Top K Frequent ...
    99+
    2023-06-20
  • C++实现LeetCode之添加和查找单词的示例分析
    这篇文章将为大家详细讲解有关C++实现LeetCode之添加和查找单词的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 211.Add and Search Word - Da...
    99+
    2023-06-20
  • C++实现LeetCode之前K个高频元素的示例分析
    这篇文章主要为大家展示了“C++实现LeetCode之前K个高频元素的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++实现LeetCode之前K个高频元素的示例分析”这篇文章吧。[L...
    99+
    2023-06-20
  • C++实现LeetCode之最短子数组求和的示例分析
    这篇文章主要介绍C++实现LeetCode之最短子数组求和的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完![LeetCode] 209. Minimum Size Subarray Sum 最短子数组之和Gi...
    99+
    2023-06-20
  • c++中vector模拟实现的示例分析
    这篇文章将为大家详细讲解有关c++中vector模拟实现的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、vector是什么?vector是表示可变大小数组的序列容器,它也采用连续存储空间来存储...
    99+
    2023-06-14
  • C# Convert.ToInt32的示例分析
    这篇文章将为大家详细讲解有关C# Convert.ToInt32的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。比如说有一个string型的3,要给它转换成int型的是用(int)3...
    99+
    2023-06-18
  • LeetCode中两数相加的示例分析
    小编给大家分享一下LeetCode中两数相加的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定两个非空链表来代表两个非负整数。数字最高位位于链表...
    99+
    2023-06-19
  • C++程序的示例分析
    小编给大家分享一下C++程序的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们先来看一段C++的示例代码:// my first&n...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作