Leetcode-206 反转链表

206. 反转链表

解题思路

1.遍历转换为数组
2.数组反转,new ListNode

解题遇到的问题

1.头结点初始化和之后结点,变量赋值不同

后续需要总结学习的知识点

1.链表的遍历、插入、删除、添加,JDK源码阅读List的不同实现

##解法1
import java.util.ArrayList;
import java.util.List;

class Solution {
    public static void main(String[] args) {
        reverseList(new ListNode(1, new ListNode(2,
                new ListNode(3, new ListNode(4, new ListNode(5))))));
    }
    /**
     * 1.遍历转换为数组
     * 2.数组反转,new ListNode
     */
    public static ListNode reverseList(ListNode head) {
        List<Integer> list = new ArrayList<Integer>();
        while (head != null) {
            list.add(head.val);
            head = head.next;
        }

        ListNode result = null;
        for (int i = list.size() - 1; i >= 0; i--) {
            if (i == list.size() - 1) {
                head = new ListNode(list.get(i));
                result = head;
            } else {
                ListNode temp = new ListNode(list.get(i));
                head.next = temp;
                head = head.next;
            }
        }
        return result;
    }

    public static class ListNode {
        int val;
        ListNode next;
        ListNode() {
        }
        ListNode(int val) {
            this.val = val;
        }
        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容