美文网首页LeetCode数据结构与算法
83. 删除排序链表中的重复元素 解题思路

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

作者: 游龙飞雪 | 来源:发表于2020-12-03 17:59 被阅读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("-----------");
        }
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/cufvwktx.html