LeetCode刷题:面试题 02.01. 移除重复节点

题目:

是否独立完成:算是,但是使用自己的办法时间复杂度会超标

解题思路:

1.双循环嵌套,定义快慢节点,双层嵌套循环,如果值一样则剔除,但是时间复杂度为O(n²)会超标

2.哈希表,利用set接口的特点,不能存储重复的值

 解题代码:

class Solution {
    public ListNode removeDuplicateNodes(ListNode head) {
        if(head == null ){return null;}//判断链表是否为空
   
    Set<Integer> box = new HashSet<Integer>();
      box.add(head.val);//将头结点的值存入哈希表中

     ListNode pre = head;//创建一个节点指向头结点

    while(pre.next!=null){//不能pre!=null,因为下面还会创建节点指向pre.next,如果pre!=null会报空指针异常

        ListNode cur = pre.next;//在循环内部定义快指针每循环一次,cur可以随着pre的变化而变化(个人理解不一定正确)
      
        if(box.add(cur.val)){//如果set添加了pre后面节点的值那么证明这个点不是重复的
            
            pre=pre.next;//则移动pre往后一格
           
        }else{
             pre.next=cur.next;//如果没有添加证明这个点是添加过的,则跳过这个点
          
        }
      
    }
    
    return head;
}
}

相关推荐

  1. LeetCode 面试经典150 27.元素

    2024-01-07 20:38:02       20 阅读
  2. leetcode面试经典150】2.元素(C++)

    2024-01-07 20:38:02       9 阅读
  3. 面试经典 150 ---- 元素

    2024-01-07 20:38:02       38 阅读
  4. 面试经典150——元素

    2024-01-07 20:38:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-07 20:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-07 20:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-07 20:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-07 20:38:02       18 阅读

热门阅读

  1. Springboot整合Flowable Modeler(flowable6.4.0)

    2024-01-07 20:38:02       33 阅读
  2. Kotlin 作用域函数

    2024-01-07 20:38:02       44 阅读
  3. js三个声明变量说明以及区别

    2024-01-07 20:38:02       36 阅读
  4. flink1.18.0 flink维表join新思路

    2024-01-07 20:38:02       48 阅读
  5. 【Github】上传代码

    2024-01-07 20:38:02       40 阅读
  6. redis

    redis

    2024-01-07 20:38:02      42 阅读
  7. 【题解】leetcode---69. x 的平方(二分查找入门)

    2024-01-07 20:38:02       36 阅读