Leetcode-remove-duplicates-from-sorted-list-ii

    xiaoxiao2025-03-15  19

    题目描述

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

    For example, Given1->2->3->3->4->4->5, return1->2->5. Given1->1->1->2->3, return2->3.

    题目不难,链表操作。

    定义一个初始结点指向头结点,然后定义一个cur结点,用于循环往下走的,并把头结点赋值给cur,定义一个pre结点用于记住停留的位置,while循环内,如果cur结点和cur下一个结点值不相等,则pre=cur,否则循环找到不相等的位置,然后pre.next = cur.next;最后cur = cur.next去判断下一个结点。

    代码如下:

    /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; ListNode newnode = new ListNode(head.val-1); newnode.next = head; ListNode cur = head; ListNode pre = newnode; while(cur != null && cur.next != null) { if(cur.val != cur.next.val) { pre = cur; }else{ while(cur.next != null && cur.val == cur.next.val) { cur = cur.next; } pre.next = cur.next; } cur = cur.next; } return newnode.next; } }

    转载请注明原文地址: https://ju.6miu.com/read-1297046.html
    最新回复(0)