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

    删除链表中重复的结点

    题目描述

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

    思路

    1. 需要两个指针,一个指向前一个节点preNode,另一个指向当前节点node,如果遇到相等的节点,node向后移动,preNode不动,存下node.val方便后面的比较,直到遇到node和node.next不相等,preNode就可以指向node.next
    2. 注意:链表开头可能就开始有重复的节点,所以默认preNode=null,在后面的给preNode赋值的时候,若preNode为null,那就把pHead设置为node.next

    代码

    /*
     public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public ListNode deleteDuplication(ListNode pHead)
        {
    		if (pHead == null) {
    			return null;
    		}
    		ListNode preNode = null;
    		ListNode node = pHead;
    		while (node != null) {
    			if (node.next != null && node.val == node.next.val) {
    				int value = node.val;
    				while (node.next != null && node.next.val == value) {
    					node = node.next;
    				}
    				if (preNode == null) {
    					pHead = node.next;
    				} else {
    					preNode.next = node.next;
    				}
    			} else {
    				preNode = node;
    			}
                node = node.next;
    		}
    		return pHead;
        }
    }
  • 相关阅读:
    es6 yield简单使用
    es6 generator 函数中的yield理解
    es6 promise的使用,同时处理多个异步请求
    es6 filter的使用
    ES6中reduce的计算过程
    es6函数的参数展开
    搭建基于express框架的运行环境
    通过node.js搭建服务,访问html静态页面
    docker compose
    JDBCUtil
  • 原文地址:https://www.cnblogs.com/rosending/p/5697020.html
Copyright © 2011-2022 走看看