算法-leetcode-链表-删除排序链表中的重复元素

题目: 83. 删除排序链表中的重复元素

题目描述:

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

示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路:
  1. 判断当前节点和下一个节点是否为空
    1. 空: 直接返回
    2. 非空: 进行删除操作
  2. 链表删除只需要 将当前next 指向 下下个节点 即可
Created with Raphaël 2.2.0 开始 cur&next是null? 结束 删除重复节点 递归cur&next是null? yes no yes no
源码

java:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head){
        // 判断 是否需要后续操作
        if(!validLinkList(head)){
            return head;
        }else {
            return delDublicates(head);
        }
        
    }

    // 验证链表
    private boolean validLinkList(ListNode head){
        if(head == null || head.next == null){
            return false;
        }
        else{
            return true;
        }
    }

    /**
    * 删除重复节点
    */
    private ListNode delDublicates(ListNode node){
        if(node == null || node.next == null) {
            return node;
        } 
        ListNode cur = node;
        if(node.val == node.next.val){
            node.next = node.next.next;
        } else {
            node = node.next;
        } 
        delDublicates(node);
        return cur;
    }
}

个人水平有限,如有问题,请各路大神指教,虚心接纳

如果觉得有帮助,请点赞收藏,谢谢

发布了21 篇原创文章 · 获赞 16 · 访问量 5876

猜你喜欢

转载自blog.csdn.net/qq_41692766/article/details/105772688
今日推荐