码迷,mamicode.com
首页 > 其他好文 > 详细

栈和队列----删除无序单链表中值重复出现的节点

时间:2018-07-20 00:24:31      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:单链表   public   test   create   return   port   存在   队列   空间复杂度   

删除无序单链表中值重复出现的节点

  

  给定一个无序单链表的头节点head,删除其中值重复的节点

  例如: 1->2->3->3->4->4->2->1->1->null 删除之后变为 1->2->3->4->null

  方法1:如果链表长度为N,时间复杂度达到O(N)

  方法2:如果要求空间复杂度为O(1),应该怎样实现

  

  【解析】

  方法1:利用哈希表去实现

  使用哈希表,因为头节点是不用删除的节点,所以首先将头节点放入到哈希表中,然后从下一个节点开始遍历

  如果哈希表中已经包含下一个节点,那么就让cur的上一个存在的节点 pre pre.next = cur.next

  如果哈希表中不包含下一个节点,那么就让pre = cur

  方法2:类似选择排序的过程

  

package com.test;

import com.test.ListNode;

import java.util.HashSet;

/**
 * Created by Demrystv.
 */
public class RemoveRepeat {

    /**
     * 方法一:利用哈希表,其时间复杂度是 O(N),空间复杂度是 O(N)
     */
    public void removeRepeat1(ListNode head){
        if (head == null){
            return;
        }
        HashSet<Integer> hashSet = new HashSet<Integer>();
        ListNode pre = head;
        ListNode cur = head.next;
        hashSet.add(head.val);
        while (cur != null){
            if (hashSet.contains(cur)){
                pre.next = cur.next;
            }else {
                hashSet.add(cur.val);
                pre = cur;
            }
            cur = cur.next;
        }
    }


    // 方法二:类似选择排序的过程,时间复杂度是O(N^2),空间复杂度是O(1)
    public void removeRep2(ListNode head) {
        ListNode cur = head;
        ListNode pre = null;
        ListNode next = null;
        while (cur != null) {
            pre = cur;
            next = cur.next;
            while (next != null) {
                if (cur.val == next.val) {
                    pre.next = next.next;
                } else {
                    pre = next;
                }
                next = next.next;
            }
            cur = cur.next;
        }
    }
    
}

 

栈和队列----删除无序单链表中值重复出现的节点

标签:单链表   public   test   create   return   port   存在   队列   空间复杂度   

原文地址:https://www.cnblogs.com/Demrystv/p/9339068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!