zoukankan      html  css  js  c++  java
  • 链表篇(二)删除排序链表中的重复元素

    
    

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    
    

    示例 1:

    
    

    输入: 1->1->2
    输出: 1->2
    示例 2:

    
    

    输入: 1->1->2->3->3
    输出: 1->2->3

    
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。




    public
    class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; } }

    解题思路:

    1、首先要知道,链表是如何实现删除元素--当前结点的next指针指向结点A,让其不指向A结点,指向其他结点,就实现了A结点的删除。

    2、当前结点和后一结点做比较,如果两者值相等,当前结点的next指针不指向与其值相等的下一结点,而是指向下一结点的next

      如果不相等,进行下一个结点和其next指针所指向结点的比较。

    3、利用链表的原理和递归的思想

    代码1、

    class Solution {
        public ListNode deleteDuplicates(ListNode head) {
            ListNode guardNode = new ListNode(0);
            ListNode newLinkedList = guardNode;
            if(head != null) {
                newLinkedList.next = head;
                int val = head.val;
                if (head.next != null) {
                    if (head.val == head.next.val) {
                        //当前节点的next指针指向后一结点的next指针
                        head.next = head.next.next;
                        deleteDuplicates(head);
                    } else {
                        head = head.next;
                    }
                }
            }
    
            return guardNode.next;
        }
    }

    代码2、和代码1的核心思想是一样的,只是优雅了一下代码。执行用时均为1ms,但是内存消耗少了0.2M

    class Solution {
        public ListNode deleteDuplicates(ListNode head) {
           if (head == null) {
                return null;
            }
            if (head.next == null) {
                return head;
            }
            if (head.val == head.next.val) {
                head.next = head.next.next;
                deleteDuplicates(head);
            } else {
                deleteDuplicates(head.next);
            }
            return head;
        }
    }
  • 相关阅读:
    复习提纲
    查看版本和存储的地方
    0到255的颜色
    stixel-world和psmnet结合出现的问题
    python plt 保存jpg出错
    三和韓長庚 著 正易 對讀 161-200
    startActivity、 startActivityForResult 、广播的使用
    01背包+卡精度 Hdu 2955
    c++ string 之 find_first_not_of 源码
    java:[1,0] illegal character: 65279 问题
  • 原文地址:https://www.cnblogs.com/coisini/p/12019579.html
Copyright © 2011-2022 走看看