剑指offer-反转链表

最近刷题,在《剑指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;
    }
}

 

你可能感兴趣的:(算法刷题之路)