链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com)
今天为大家带来新的题,和昨天那个类似,但是又有点变化
这个题是这样做的,思路如下
和那个反转链表相似,只是这个有特定的区间
我们可以在链表前加一个表头,后续返回时去掉就好了,在使用两个指针,一个指向当前节点,一个指向前序节点。
依次遍历链表,到第m个的位置。
对于从m到n这些个位置的节点,依次断掉指向后续的指针,反转指针方向。
返回时去掉我们添加的表头。
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ public ListNode reverseBetween (ListNode head, int m, int n) { // write code here //设置虚拟头结点 //加个表头 ListNode ret = new ListNode(-1); ret.next = head; //前序节点 ListNode pre = ret; //当前节点 ListNode cur = head; //找到m for(int i = 1; i < m; i++){ pre = cur; cur = cur.next; } //从m反转到n for(int i = m; i < n; i++){ ListNode temp = cur.next; cur.next = temp.next; temp.next = pre.next; pre.next = temp; } //返回去掉表头 return ret.next; } }
今天的讲解就到此结束,我们下期再见,886!!!