LeetCode数据结构与算法

83. 删除排序链表中的重复元素 解题思路

2020-12-03  本文已影响0人  游龙飞雪

83. 删除排序链表中的重复元素 解题思路

解题思路

当前值与下一个节点的值比较,所以当前节点不需要改变(下一个节点不能为空);当相同时,当前节点的下一个节点跳过一个节点;当不同时,当前节点后移。

代码

/**
 * 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 (head == null || head.next == null) { return head; }

        ListNode node = head;
        while (node.next != null) {
            if (node.next.val == node.val) {
                node.next = node.next.next;
            } else {
                node = node.next;
            }
        }

        return head;
    }
}

测试用例

public void test() {
        int arr1[] = {1, 1, 2};
        test(arr1);

        int arr2[] = {1, 1, 2, 3, 3, 5, 5};
        test(arr2);

        int arr3[] = {1, 1, 2, 2, 2, 2, 3, 4, 4, 5, 5};
        test(arr3);

        test(null);
    }

    public void test(int arr[]) {
        ListNode head = new ListNode(arr);
        System.out.println("组合完成:" + head == null ? "【null】" : head.toLinkedString());

        ListNode newhead = deleteDuplicates(head);
        System.out.println("删除重复:" + newhead == null ? "【null】" : newhead.toLinkedString());

        System.out.println("-----------");
    }
上一篇下一篇

猜你喜欢

热点阅读