算法 头插法、双指针核心思想 一般对于链表问题,都要考虑在链表头上加一个0结点,方便进行下一步处理。头插法即为在头指针后面添加结点。设置两个结点,一个结点保持在right-1的位置,另外一个结点从right开始,一步步往下移动,直到left。代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode reverseBetween(ListNode head, int left, int right) { ListNode firstHead = new ListNode(0,head); ListNode secondHead = new ListNode(0,head); ListNode result = firstHead; int len = 0; while(len != left - 1){ firstHead = firstHead.next; secondHead = secondHead.next; len++; } secondHead = secondHead.next; for(int i = 0;i < right - left;i++){ ListNode temp = secondHead.next; secondHead.next = temp.next; temp.next = firstHead.next; firstHead.next = temp; } return result.next; } }