题解 | #反转链表#

反转链表

http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

题目

题目

思路

注释部分为我自己的思考,但是出bug了,还未找出来,于是采用了他人的思考。我的做法是从头结点开始,将当前结点的值存进以恶搞arrayList集合中,最后从右往左遍历这个集合,获取每个位置的值并创建一个结点ListNode,同时获取下一个集合的元素值,将ListNode.next=new ListNode(list.get(i-1))。与此同时定义一个存放结点的队列,将每一次创建的结点从队尾入队,最后返回的就是一开始入队的那一个结点,采用的是队列的pollFirst()方法。

他人的思考更加简单,简洁,参考他的。

代码

import java.util.*;

public class Solution {
    public ListNode ReverseList(ListNode head) {
        /*Deque<ListNode> d = new ArrayDeque<>();
        ArrayList list = new ArrayList();
        ListNode node = null;
        if(head == null){
            return node;
        }else{
            while(head != null){
                list.add(head.val);
                head = head.next;
            }

            for(int i=list.size()-1;i>-1;i--){
                node = new ListNode((Integer)list.get(i));
                d.addLast(node);
                if(i > 0){
                    node.next = new ListNode((Integer)list.get(i-1));
                }else{
                    node.next = null;
                }
            }

            return d.pollFirst();
        }*/

        ListNode prev = null;
        ListNode curr = head;
        while (curr != null)
        {
            ListNode next = curr.next;
            curr.next = prev;
            prev = curr;
            curr = next;
        }
        return prev;
    }
}
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
耀孝女:就是你排序挂了
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务