• 删除链表中重复的结点 --剑指offer



    题目描述

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     
    一:没参考写的 遇到相同的就删除 考虑多种情况 比较复杂
    public class Solution {
        public static ListNode deleteDuplication(ListNode pHead)
        {
            if(pHead == null )return null;
            ListNode laseNode=null;
            int tem=0;
            ListNode p=pHead;
            boolean flag=false;
            while (p.next != null){
                if(p.val == p.next.val){
                    int a=p.val;
                    flag=true;
                    if(laseNode == null){
                        pHead = p.next.next;
                        p=pHead;
    
                    }else {
                        laseNode.next=p.next.next;
                        p=laseNode.next;
                    }
                    tem=a;
                }else if(p.val == tem && flag){
                    laseNode.next=p.next;
                    p=laseNode.next;
                }else {
                    laseNode=p;
                    p=p.next;
                }
                if(p==null) break;
            }
            if(p != null && p.val == tem && flag) {
                if(laseNode != null) {
                    laseNode.next = p.next;
                }else {
                    return null;
                }
            }
            return pHead;
        }
    
    }

    二:参考后写的

    建立一个头结点 然后两个指针 找不相同的结点 相同的结点跳过

    public class Solution {
        public static ListNode deleteDuplication(ListNode pHead){
            if (pHead == null || pHead.next == null)return pHead;
            ListNode node = new ListNode(0);
            node.next=pHead;
            ListNode p1=node,p2=pHead;
            while (p2 != null){
                while (p2.next!=null && p2.next.val == p2.val){
                    p2 = p2.next;
                }
                if(p1.next != p2){
                    p2=p2.next;
                    p1.next=p2;
                }else {
                    p1=p2;
                    p2=p2.next;
                }
            }
            return node.next;
        }
    }
  • 相关阅读:
    5 Longest Palindromic Substring(easy)
    4 Median of Two Sorted Arrays(medium)
    前言
    3 Longest Substring Without Repeating Characters(medium)
    JavaScript&jQuery学习笔记
    禅道、jenkins部署记录
    jenkins部署自动化项目备注
    pytest
    我的第一个py爬虫-小白(beatifulsoup)
    单元测试python unittest
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12465710.html
Copyright © 2020-2023  润新知