zoukankan      html  css  js  c++  java
  • 删除链表中重复的结点

    public class Solution {
        public ListNode deleteDuplication(ListNode pHead)
        {
            if(pHead == null || pHead.next == null) return pHead;//特殊情况
            else {
                ListNode p1 = pHead;
                ListNode p = new ListNode(-1);//新建头节点,指向符合条件的链表末尾
                p.next = p1;
                while(p1.next != null){ 
                    if(p1.val == p1.next.val){ 
                        int i = p1.val;                  //记录下来 防止有多个相同值
                        while(p1.val == i){
                            p1 = p1.next;
                            if(p1 == null){   //到末尾说明尾部都要删掉
                                p.next = null;
                                if(pHead.val == i) return null;      //全都是一个值的情况
                                else return pHead;
                            }
                        }
                        p.next = p1;
                        if(pHead.val == i) {  //开头重复的情况
                         pHead = p1;
                        }
                    }
                    else{
                        p = p1;
                        p1 = p1.next;
                    }
                }
                return pHead;
               
            }

        }
    }

    之前用p1,p2两个结点,后发现复杂改为一个结点,但时间反而用得多了(20ms vs 31ms)。

  • 相关阅读:
    django目录
    django之form表单验证
    django操作数据库之查询F,Q操作 和 seach搜索功能
    django的序列化
    三目运算
    【转】做有生命力的接口测试
    【转】浅谈反应测试
    【转】jmeter 进行java request测试
    【转】探索式测试:基本概念
    【转】 测试职业思考:如何成为一名优秀的软件测试工程师
  • 原文地址:https://www.cnblogs.com/dyq19/p/10476136.html
Copyright © 2011-2022 走看看