美文网首页
删除线性表中的重复数据-使用单链表实现

删除线性表中的重复数据-使用单链表实现

作者: 兔子是黑老大 | 来源:发表于2019-03-01 16:22 被阅读0次

tag 重复数据 线性表 单链表

思想

  1. 使用双指针法,同时标记前后两个数据,这里有一点,如果只有一个数据,那就直接返回数组就好啦
  2. 如果数组的长度大于等于2
    1. 使用first标记第一个数据,second标记第二个数据
    2. 如果first.data != second.data ,那么first和second就可以同时前进
    3. 如果first.data == second.data, 就不断的使second前进,直到找到一个first.data != second.data
      1. first前进一格,因为first和当初前面的second是重复数据,而first本身不重复,所以first前进一格
      2. first.data = second.data
    4. 重复1-3直到second达到最末尾,现在从第一个到first标记的数据都是不重复的数据,也就是说first就是不重复数据的最终标记

代码

 ListNode first = head;  
        if(first == null)
            return head;
        ListNode second = first.next;

        while(second != null) {
            if(second.val != first.val) {
                first = first.next;
                first.val = second.val;
            }
            second = second.next;
        }
        first.next = null;
        return head;

总结

  1. 不同同时走,相同前停留;如果不同到,前进赋值好

相关文章

网友评论

      本文标题:删除线性表中的重复数据-使用单链表实现

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