leetcode刷题日记——反转链表
[ 题目描述 ]:
[ 思路 ]:
- 题目要求将链表中指定位置的部分进行翻转
- 反转的部分,其实可以看做使用头插法插入链表
- 运行如下:
struct ListNode* reverseBetween(struct ListNode* head, int left, int right) {struct ListNode temp;temp.next=head;struct ListNode* prev=&temp;int i=1;for(i=1;i<left;i++){prev=prev->next;}struct ListNode* cur=prev->next;struct ListNode* next=NULL;for(i;i<right;i++){next=cur->next;cur->next=next->next;next->next=prev->next;prev->next=next;}return temp.next;
}
[ 官方题解 ]:
- 方法一:穿针引线,反转 left 到 right 部分以后,再拼接起来
- 方法二:一次遍历「穿针引线」反转链表(头插法),基本同上