1. 认识递归
2. 链表和递归(宏观理解递归)
leetCode 203号问题:https://leetcode-cn.com/problems/remove-linked-list-elements/
首先,有一个removeElement(ListNode head,int val)函数可以将重复元素删掉,然后返回删除后的结果(红色部分)。
然后再将函数返回的结果(红色部分) 加上head来看,如果head.val == val;那么head需要删除,即答案就是函数返回结果;否则,答案是函数返回的结果加上head;
代码实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { if (head == null) return head; ListNode res = removeElements(head.next,val); if (head.val == val) return res; else{ head.next = res; return head; } } }
3. 递归的微观解读
链表递归的微观解读