解题思路
这道题我的写法和y总的写法大致一致,但是我觉得他的写法比较好,
temp这个节点可能存在,也可能不存在.y总的写法不用去过多地去考
虑p3或者是temp节点的情况。
之前的代码
/**
* 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 reverseList(ListNode head) {
ListNode p = head;
int length=0;
while(p!=null){
length++;
p=p.next;
}
if(length<2){
return head;
}
ListNode p1 = head;
ListNode p2 = p1.next;
ListNode temp = p2.next;
while(p2!=null){
p2.next = p1;
p1=p2;
p2=temp;
if(temp==null){
break;
}
temp=temp.next;
}
head.next = null;
return p1;
}
}
改进后的代码
/**
* 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 reverseList(ListNode head) {
ListNode p = head;
int length=0;
while(p!=null){
length++;
p=p.next;
}
if(length<2){
return head;
}
ListNode p1 = head;
ListNode p2 = p1.next;
while(p2!=null){
ListNode temp = p2.next;
p2.next = p1;
p1=p2;
p2=temp;
}
head.next = null;
return p1;
}
}