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

2021/6/1 14:20:59

本文主要是介绍算法:删除链表中重复的元素||,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

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

方法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/

 



这篇关于算法:删除链表中重复的元素||的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程