描述
输入一个链表,反转链表后,输出新链表的表头。
示例1
输入:{1,2,3}
返回值:{3,2,1}
分析:
1. 判断非空以及是否只有一个元素,是直接返回;
2. 需要3个指针,分别指向当前操作元素,上一个,下一个。目的是保存原始链接顺序。
3. 注意开始和结束循环的条件,循环开始需要next指向最新元素不为空,且last和curr指向空(如果都指向head元素,指针重定向时会形成环导致内存溢出),结束需要next指向元素为空。
提交代码:
/*
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||head.next == null) return head;
ListNode next = head;
ListNode curr = null;
ListNode last = null;
while(next != null){
last = curr;
curr = next;
next = next.next;
curr.next = last;
}
return curr;
}
}
提交结果:答案正确 运行时间:94ms 占用内存:13860KB 使用语言:Java 用例通过率:100.00%