题目:
实现单向链表的反转
要求:如果链表的长度为 N 时间复杂度要求为 O(N),额外空间复杂度为 O(1)。
public class Node{
public int value;
public Node next;
public Node(int data){
this.value = data;
}
}
public Node reverseList(Node head){
Node pre = null;
Node next = null;
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
想不清楚的话在纸上按流程多画画就会明白的,我也是动手多画画才通透的。
参考资料:《程序员代码面试指南》左程云 著