[leetcode]Reverse Linked List II
有一道链表的题目。今天面试别人出了链表的题目都被答出来了,可见这个一般训练过还是能做出来的,就是考虑corner case即可。这里主要是m为1的时候,head就要变了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | class Solution { public : ListNode *reverseBetween(ListNode *head, int m, int n) { ListNode* current = head; ListNode* last = NULL; int i = 1; while (i != m && current != NULL) { last = current; current = current->next; i++; } ListNode* start1 = last; ListNode* start2 = current; last = current; current = current->next; i++; while (i != n+1 && current != NULL) { ListNode* tmp = current->next; current->next = last; last = current; current = tmp; i++; } if (start1 != NULL) { start1->next = last; } else { head = last; } if (start2 != NULL) { start2->next = current; } return head; } }; |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步