zoukankan      html  css  js  c++  java
  • [编程题] 删除链表中的重复节点 (保留重复节点一次)

    [编程题] 删除链表中的重复节点 (保留重复节点一次)

    题目信息

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->-2>3->4->5

    方法

    三指针

    Java代码

    /*
     public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
         //方法1:直接删除
        
        public ListNode deleteDuplicates(ListNode head) {
            ListNode dummy = head;
            while(dummy!=null && dummy.next!=null){
                if(dummy.val==dummy.next.val){
                    dummy.next = dummy.next.next;
                }else{
                    dummy = dummy.next;
                }
            }
            return head;
        }
    
        //方法2:三指针
        public ListNode deleteDuplication(ListNode pHead){
            ListNode p0 = pHead;
            ListNode p1 = p0.next;
            ListNode p2 = p1.next;
            
            while(p1!=null){
                //如果没重复的话就指针后移
                if(p0.val!=p1.val){
                    p0 = p0.next;
                    p1 = p0.next;
                    p2 = p1.next;
                }else{
                    p0.next = p2;  //跨过重复的p1;
                    
                    //指针重新定位
                    p0 = p2;
                    p1 = p0.next;
                    if(p1!=null){
                        p2 = p1.next;
                    }
                }
            }
            //返回
            return pHead;
            
        }
    }
    

    输出:

    image-20200802160032399

  • 相关阅读:
    十大接口
    ORM表之间高级设计
    响用模块
    异常模块的使用
    解析模块的使用
    渲染模板
    通达OA 11.7 后台sql注入getshell漏洞复现
    通达OA 11.5 SQL注入漏洞复现
    ThinkAdminV6 未授权访问and 任意文件查看 漏洞复现
    用友GRP-u8 XXE 漏洞复现
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13419032.html
Copyright © 2011-2022 走看看