题解 | #删除有序链表中重复出现的元素#

删除有序链表中重复出现的元素

http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

先遍历一遍,用map存起来,key是当前节点的值,value是出现的次数

再遍历一次,如果这个节点的值出现过2次,则删掉这个节点

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if(head==null){
            return null;
        }
        HashMap<Integer,Integer> map = new HashMap<>();

        ListNode node = head;
        while(node!=null){
            int count = map.get(node.val) == null ? 0 : map.get(node.val);
            map.put(node.val,++count);
            node = node.next;
        }

        ListNode listNode = new ListNode(-1);
         ListNode res = listNode;
        listNode.next = head;

        while(listNode.next!=null){
            if(map.get(listNode.next.val)>1){
                if(listNode.next.next!=null){
                    listNode.next = listNode.next.next;
                }else{
                    listNode.next = null;
                }
            }else{
                listNode = listNode.next;
            }

        }


        return res.next;

    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务