对比一下
晕 虚拟头节点没有定义在 头节点之前
晕 又是这儿
在这里插入代码片
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 newhead=new ListNode(-1);
newhead.next=head;
ListNode prev=newhead;
for(int i=0;i<m-1;i++){
prev=prev.next;
}
ListNode leftNode=prev.next;
ListNode rightNode=prev;
for(int i=0;i<n-m+1;i++)
{
rightNode=rightNode.next;
}
prev.next=null;
ListNode cur=rightNode.next;
rightNode.next=null;
reverseList(leftNode);
prev.next=rightNode;
leftNode.next=cur;
return newhead.next;
}
public void reverseList(ListNode head){
ListNode cur=null;
ListNode prev=head;
while(prev!=null){
ListNode prev_next=prev.next;
prev.next=cur;
cur=prev;
prev=prev_next;
}
}
}
参考思路
补充:
1.注意虚拟头节点的定义
2.newhead.next=head;
3.注意链表反转时 cur的指向 prev.next=cur;(修正 prev的指向)
bm1
感觉不加边际条件也还行?
为什么返回cur呢?
哦 此时prev=null了
返回 null
cur前一节点
![在这里插入代码片](https://img-blog.csdnimg.cn/92ca376150524c56821a5d35a3c2ca9b.png)
在这里插入代码片
![在这里插入代码片](https://img-blog.csdnimg.cn/ca5e8d80d988463d8c534bc90ab04fa1.png)
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null)
{return null;}
if(head.next==null){return head;}
ListNode prev=head;
ListNode cur=null;
while(prev!=null)
{
ListNode prev_next=prev.next;
prev.next=cur;
cur=prev;
prev=prev_next;
}return cur; }
}
bm4
先看源代码
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode dummyhead=new ListNode(-1);
ListNode last=dummyhead;
if(list1==null)
{return list2;}
if(list2==null){
return list1;
}
while(list1!=null&&list2!=null)
{
if(list1.val<=list2.val)
{
last.next=list1;
last=list1;
list1=list1.next;
}else{
last.next=list2;
last=list2;
list2=list2.next;
}
if(list1==null)
{last.next=list2;}
if(list2==null)
{last.next=list1;}
}return dummyhead.next;
}
}