Advertisement

大厂面试算法系列-移除无序链表中的重复项(二)-递归法

阅读量:

导语
这种方法的核心思路是对节点cur而言首先通过递归来实现对其后续节点组成子链表中重复节点的删除操作。这正是采用递归方法的核心理念。

处理节点cur时,请首先通过递归的方式删掉以cur.next为首的子链表中重复的结点;随后,在同样的子链表中识别出与当前节点具有相同数据域的元素并将它们移除。代码实现如下。

复制代码
    private static LNode removeDupRecursion(LNode head){
    	// 如果没有后续节点了那么就退出递归
    	if(head.next==null){
    		return head;
    	}
    	
    	LNode pointer = null;
    	// 记录当前链表
    	LNode cur = head;
    	//对于以head.next为首的子链表删除重复的结点
    	// 递归结束之后,head.next 数据应该是 null;
    	head.next = removeDupRecursion(head.next);
    	//此时pointer为null
    	pointer = head.next;
    	//找出以head.next为首的子链表中与head结点相同的节点相同的结点并删除
    	// 这个时候返回 

全部评论 (0)

还没有任何评论哟~