zoukankan      html  css  js  c++  java
  • 剑指offer-删除链表中重复的节点

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

    解题思路:

    1. 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况

    2.设置 pre ,last 指针, pre指针指向当前确定不重复的那个节点,而last指针相当于工作指针,一直往后面搜索。

    这道题目是删除重复的节点,不是去重!!!

    画个图方便理解。

     1 /*
     2  public class ListNode {
     3     int val;
     4     ListNode next = null;
     5 
     6     ListNode(int val) {
     7         this.val = val;
     8     }
     9 }
    10 */
    11 public class Solution {
    12     public ListNode deleteDuplication(ListNode pHead)
    13     {
    14 
    15         if (pHead==null || pHead.next==null){return pHead;}
    16         ListNode Head = new ListNode(0);
    17         Head.next = pHead;
    18         ListNode pre  = Head;
    19         ListNode last = Head.next;
    20         while (last!=null){
    21             if(last.next!=null && last.val == last.next.val){
    22                 // 找到最后的一个相同节点
    23                 while (last.next!=null && last.val == last.next.val){
    24                     last = last.next;
    25                 }
    26                 pre.next = last.next;
    27                 last = last.next;
    28             }else{
    29                 pre = pre.next;
    30                 last = last.next;
    31             }
    32         }
    33         return Head.next;
    34         
    35 
    36     }
    37 }
  • 相关阅读:
    Java核心技术点之动态代理
    一起写一个Android图片加载框架
    Java核心技术点之注解
    Android中的Intent Filter匹配规则介绍
    阿里客户端工程师试题简析——Android应用的闪退(crash)分析
    Android开发之高效加载Bitmap
    Java NIO:浅析I/O模型
    深入探索Android中的Handler
    git常用命令
    SM2
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10877941.html
Copyright © 2011-2022 走看看