0    课程地址

https://coding.imooc.com/lesson/207.html#mid=13440

 

1    重点关注

1.1    代码草图

倒序思维

 

 

 

1.2    递归和链表对比

通过对比,递归要比链表的实现运行时间更少,内存更小

 

 

2    课程内容


3    Coding

3.1    leetCode203 递归实现

  •  测试类:
package com.company;

/**
 *  使用递归实现
 *  203问题解决 删除链表的元素
 * @author weidoudou
 * @date 2022/11/1 10:47
 **/
class Solution2 {
    public ListNode removeElements(ListNode head, int val) {
        //1 基本方法
        if(null==head){
            return null;
        }

        //2 方法拆分
        ListNode cur = removeElements(head.next,val);

        if(head.val==val){
            return cur;
        }else{
            head.next = cur;
            return head;
        }

    }

    public static void main(String[] args) {
        int[] nums = {1,2,6,3,4,5,6};
        ListNode listNode = new ListNode(nums);
        System.out.println(listNode);


        ListNode res =  new Solution2().removeElements(listNode,6);
        System.out.println(res);
    }
}

 

 

  • 测试结果:
1->2->6->3->4->5->6->Null
1->2->3->4->5->Null

Process finished with exit code 0

 

3.2    代码简化

package com.company;

/**
 *  使用递归实现
 *  203问题解决 删除链表的元素
 * @author weidoudou
 * @date 2022/11/1 10:47
 **/
class Solution2 {
    public ListNode removeElements(ListNode head, int val) {
        //1 基本方法
        if(null==head){
            return null;
        }

        //2 方法拆分
        head.next = removeElements(head.next,val);
        return (head.val == val) ? head.next : head;

    }

    public static void main(String[] args) {
        int[] nums = {1,2,6,3,4,5,6};
        ListNode listNode = new ListNode(nums);
        System.out.println(listNode);


        ListNode res =  new Solution2().removeElements(listNode,6);
        System.out.println(res);
    }
}

 

posted on 2022-11-01 11:22  菜鸟乙  阅读(15)  评论(0编辑  收藏  举报