LinkedList专题1

237 Delete Node in a Linked List

思路:单向链表,只给定要删除的节点。怎么删除这个节点。参考。例如要删除节点node。一般来说我们需要将node.preNode.next = node.next。但是现在没有node的上一个节点。代替方案是修改当前节点为node.next节点。

    node.val = node.next.val;
    node.next = node.next.next;

206 Reverse Linked List

思路:逆转LinkedList,也是单向的。每new一个节点,将当前节点设置为头节点,上一个节点设置为当前节点的next。

    public ListNode reverseList(ListNode head) {
        if(head==null) return null;
        ListNode node = head;
        ListNode newNode = new ListNode(node.val);
        while(node.next!=null){
           node = node.next;
           ListNode newHead = new ListNode(node.val);
           newHead.next = newNode;
           newNode = newHead;
        }
        return newNode;
    }

学习:不创建新的node,修改原节点的next为上一个节点。参考链接

21. Merge Two Sorted Lists

思路:有些题你知道该怎么做,就是不会写代码。
代码

234. Palindrome Linked List

学习:这道题目的思路是比较简单的。对于单向列表的难点,往往就是就是如何找到一个节点的上一个节点。这个根据不同要求解决方法不同。
本题思路是1 查找到LinkedList的一半;2 把后一部分逆转;3 比较两部分是否相同。这里的细节就是注意当list长度为奇数的时候。
1 查找到LinkedList的一半,使用快慢指针;
2 把后一部分逆转:在前面做过;
3 比较相同,就简单了。
代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值