最近刷题,在《剑指offer》上看到了一个这样的题目:
输入一个链表,反转链表后,输出新链表的表头。
时间限制:1秒 空间限制:32768K 热度指数:491749。
等我写完提交完代码,发现已经提交的代码中几乎都是用双链表来实现的,就是将当前链表转化成双链表,这样就有了pre指针。
但是我个人觉得完全没必要这么麻烦,我的想法是:(1)、用栈存储输入链表的每一个值;(2)、构建新链表,依次从栈中取值放入链表即可,具体实现代码如下:
import java.util.Stack;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null) return head;
Stack stack= new Stack();
while(head != null){
stack.push(head.val);
head = head.next;
}
ListNode list= head;
while(stack != null){
list = list.next;
list.val=stack.pop();
}
return list;
}
}