算法:删除链表中重复的元素||

 算法:删除链表中重复的元素||

//删除链表中重复的元素

方法1:利用哈希表去重,然后遍历哈希表新建节点

方法2:双指针
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head==null || head.next==null) {
            return head;
        }


        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode a = dummy;
        ListNode b = head;

        while(b!=null && b.next!=null) {
            //初始化的时a指向的是哑结点,所以比较逻辑应该是a的下一个节点和b的下一个节点
            if(a.next.val!=b.next.val) {
                a = a.next;
                b = b.next;
            }
            else {
                //如果a、b指向的节点值相等,就不断移动b,直到a、b指向的值不相等 
                while(b!=null && b.next!=null && a.next.val==b.next.val) {
                    b = b.next;
                }
	//重新指向
                a.next = b.next;
                b = b.next;
            }
        }
        return dummy.next;
    }
}


链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/solution/san-chong-jie-fa-duo-tu-zhan-shi-82-shan-chu-pai-x/

 

上一篇:PHP 页面静态化/纯静态化/伪静态化


下一篇:数据库学习笔记(1)-----数据库操作的基本四类语法(2019/2/26)