题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
总结下解题思路:
- 框架逻辑就是正常的新建链表过程
- 问题的核心是找到不重复的节点,所以这里采用了递归进行查找,没有使用官方的curr.next.next 的办法。这种更加符合我个人的思考习惯。先解决框架问题后,再解决局部问题。
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates(ListNode head) { // write code here if (head == null || head.next == null) { return head; } ListNode newHead = null; ListNode p1 = null; ListNode curr = head; while (curr != null) { curr = getSigleListNode(curr); if (newHead == null) { newHead = curr; p1 = curr; if (curr != null) { curr = curr.next; } continue; } p1.next = curr; if (curr != null) { curr = curr.next; } p1 = p1.next; } return newHead; } private ListNode getSigleListNode(ListNode curr) { if (curr == null){ return null; } ListNode p2 = curr; curr = curr.next; boolean isRepete = false; while (curr !=null && curr.val == p2.val){ isRepete = true; curr = curr.next; } if (!isRepete){ return p2; } return getSigleListNode(curr); } }#我的求职思考#