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); } }
诸葛