• 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表


    样例

    998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000
    

    java代码

    /**
     * @Description:删除无序链表中值重复的链表
     * @Author: lizhouwei
     * @CreateDate: 2018/4/7 10:06
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter2_13 {
    
        public Node removeRep(Node head) {
            Node pre = head;
            Node cur = head.next;
            //由于set 比较的是hashcode ,值相同的不同对象,hashcode不同,
            //放Integer也不行,因为值大于100,则不在Integer类的缓存中放,所以也会是不同的值
            // 所以不能放对象,而应该放它值的string类型。字符串是一个一个字符去比较的
            Set<String> nodes = new HashSet<String>();
            nodes.add(head.vlaue + "");
            while (cur != null) {
                //如果前面已经出现过,则让pre.next 指向当前节点的后继节点,
                if (nodes.contains(cur.vlaue + "")) {
                    pre.next = cur.next;
                } else {
                    pre = cur;
                    nodes.add(cur.vlaue + "");
                }
                cur = cur.next;
            }
            return head;
        }
    
        //测试
        public static void main(String[] args) {
            Chapter2_13 chapter = new Chapter2_13();
            Link link = new Link();
            //构有重复的造链表
            for (int i = 1000; i > 997; i--) {
                link.add(i);
                link.add(i);
                link.add(i);
            }
            Link.printLink(link.head);
            Node head = chapter.removeRep(link.head);
            Link.printLink(head);
        }
    }
    
    
  • 相关阅读:
    Extension:WYSIWYG
    partprobe
    Centos install Parosid
    linux 打造man中文帮助手册图解
    男人到了二十几岁后
    Mediawiki update to 1.24
    华为笔试题
    排序算法
    求素质的算法
    判断有符号和无符号数和符号
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8732525.html
Copyright © 2020-2023  润新知