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

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. 不同同时走,相同前停留;如果不同到,前进赋值好
全部评论

相关推荐

企业都这么缺人了吗?缺人为什么还给白菜价!
真起不了响亮的名字:我给你出个主意,把公司报出来,让牛友去投,岂不美哉
点赞 评论 收藏
分享
nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务