博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 92. Reverse Linked List II 解题报告
阅读量:2360 次
发布时间:2019-05-10

本文共 1450 字,大约阅读时间需要 4 分钟。

LeetCode 92. Reverse Linked List II 解题报告

题目描述

Reverse a linked list from position m to n. Do it in-place and in one-pass.


示例

Example :

Given 1->2->3->4->5->NULL, m = 2 and n = 4,

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


注意事项

Given m, n satisfy the following condition:

1 ≤ m ≤ n ≤ length of list.


解题思路

我的思路:

这道题考的知识点是链表,由于题目要求是只能遍历一次,并且是在原链表上操作,所以很容易想到就是把要翻转的元素逐个插入到不需要翻转的元素的后面。举个例子,比如1->2->3->4->5->NULL, m = 2 and n = 4,那么就是把3,4插入到1的后面,即

插入3:1->3->2->4->5->NULL
插入4:1->4->3->2->5->NULL
由于可能整个链表需要翻转,为了方便操作,我特意先在链表头前插入一个辅助元素,整个插入过程见下图:
insert

只要理清链表插入的操作并且最后注意返回的应该是去除辅助元素的链表就能通过。


代码

我的代码

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* reverseBetween(ListNode* head, int m, int n) {        ListNode *pHead = new ListNode(0);        ListNode *pTail = nullptr;        ListNode *pNext = nullptr;        ListNode *pPrev = pHead;        pHead->next = head;        for(int i = 0; i < m - 1; i++) {            pHead = pHead->next;        }        pTail = pHead->next;        for (int i = m; i < n; i++) {            pNext = pTail->next;            pTail->next = pNext->next;            pNext->next = pHead->next;            pHead->next = pNext;        }        return pPrev->next;    }};

总结

这道题是一道普通的链表题,虽然难度是中等,但是感觉实际难度应该是简单,只要处理好链表的插入操作就行。

最近都在忙着找实习,顾着复习基础知识和刷笔试真题,所以少在LeetCode上刷题了,但是每周至少一道还是能保证的,抓紧时间,努力加油,希望能快点找到心仪的实习 ↖ ( ^ ω ^ ) ↗

你可能感兴趣的文章
使用 LVS 实现负载均衡原理及安装配置详解
查看>>
图形表示openstack VPC的创建过程
查看>>
在qemu kvm虚机中编译DPVS
查看>>
博客园账号转移
查看>>
《操作系统导论》
查看>>
排序-冒泡、选择、插入、快速、归并
查看>>
C++类静态成员与类静态成员函数
查看>>
C++中字节对齐
查看>>
GCC编译的背后( 预处理和编译 汇编和链接 )
查看>>
gdb调试
查看>>
C++智能指针、悬垂指针、哑指针、野指针
查看>>
JavaScript中的backgroundPosition的设置
查看>>
chrome模拟手机客户端模拟器使用方法
查看>>
让IE浏览器运行js时,不再提示“允许阻止内容”
查看>>
window.innerWidth和window.innerHeight
查看>>
在网页中嵌入Base64编码文件
查看>>
js的闭包概念
查看>>
js深拷贝和浅拷贝
查看>>
对JavaScript中call和apply的理解
查看>>
CSDN如何转载别人的文章
查看>>