Leetcode Reverse Linked List II
来源:互联网 发布:centos shutdown命令 编辑:程序博客网 时间:2024/06/06 16:56
Reverse a linked list from position m ton. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL
, m = 2 and n = 4,
return 1->4->3->2->5->NULL
.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
看到题目的第一想法,就是经典的链表逆序的变形,思想简单。
代码如下:
/** * 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) { if(n==m) return head; ListNode* curr = new ListNode(0); ListNode* pre = curr; curr->next = head; int count = 1; while(count < m) { curr = curr->next; count++; } ListNode* thead = curr; ListNode* temp; curr = curr->next->next; count++; while(count <= n) { temp = curr->next; curr->next = thead->next; thead->next = curr; curr = temp; count++; } count=0; while(count < n-m+1) { thead = thead->next; count++; } if(thead != NULL) thead->next = curr; return pre->next; }};
代码有点混乱,进了整理后如下:
/** * 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) { if(n==m) return head; n -= m; ListNode* thead = new ListNode(0); ListNode* pre = thead; thead->next = head; while(--m) thead = thead->next; ListNode* temp; ListNode* pstart = thead->next; while(n--) { temp = pstart->next; pstart->next = temp->next; temp -> next = thead->next; thead->next = temp; } return pre->next; }};
阅读全文
0 0
- LeetCode[Linked List]: Reverse Linked List II
- LeetCode: Reverse Linked List II
- LeetCode: Reverse Linked List II
- [LeetCode] Reverse Linked List II
- [Leetcode] Reverse Linked List II
- [LeetCode]Reverse Linked List II
- Leetcode: Reverse Linked List II
- [Leetcode]Reverse Linked List II
- [leetcode]Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode Reverse Linked List II
- [leetcode] Reverse Linked List II
- LeetCode - Reverse Linked List II
- [LeetCode] Reverse Linked List II
- LeetCode | Reverse Linked List II
- 【leetcode】Reverse Linked List II
- Leetcode: Reverse Linked List II
- leetcode Reverse Linked List II
- ItemWeaponMelee近战武器类
- bind(2) error:Permission denied when trying to bind to '/var/run/hdfs-sockets/dn’ ——datanode
- Java面试题集(1-50)
- 优化tableview注意点
- ICP算法
- Leetcode Reverse Linked List II
- 解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed
- OpenCV 获取ROI
- matplotlib图例中文显示问题
- ceph0.94安装
- keras切换后端(backend)为tensorflow或theano的方法
- Windows下使用Visual Studio Code搭建Go语言环境
- ssh登陆之忽略known_hosts文件
- 关于免费的seo网站推广方法有哪些?